summaryrefslogtreecommitdiffstats
path: root/gtk-gui.c
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2012-12-15 13:46:53 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2012-12-15 19:53:07 -1000
commitbe9d924cf833fd4f4de478cbc5dccbb3775acc3d (patch)
tree06fbd08f18e70710f71912b00a5ae0a81e3c257c /gtk-gui.c
parent371ace39b54266b9833d90d9d8e863b8bea3ac8f (diff)
downloadsubsurface-be9d924cf833fd4f4de478cbc5dccbb3775acc3d.tar.gz
Reserve enough memory when storing a DC's nickname
in gtk-gui.c: The input text field in set_dc_nickname() has a limit of 68 unicode characters, which are 136 bytes. In remember_dc(), to make sure that this nickname, the deviceid (4 bytes) and also the extra characters (",{}") always fit wihout truncation (from snprintf) in the allocated stack buffer, we increase the size of the buffer to 256 bytes. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'gtk-gui.c')
-rw-r--r--gtk-gui.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/gtk-gui.c b/gtk-gui.c
index f3646b0ff..6b3371838 100644
--- a/gtk-gui.c
+++ b/gtk-gui.c
@@ -2043,7 +2043,7 @@ static char *cleanedup_nickname(const char *nickname, int len)
void remember_dc(uint32_t deviceid, const char *nickname, gboolean change_conf)
{
if (!get_dc_nickname(deviceid)) {
- char buffer[80];
+ char buffer[256];
struct dcnicknamelist *nn_entry = malloc(sizeof(struct dcnicknamelist));
nn_entry->deviceid = deviceid;
/* make sure there are no curly braces or commas in the string and that
@@ -2051,7 +2051,7 @@ void remember_dc(uint32_t deviceid, const char *nickname, gboolean change_conf)
nn_entry->nickname = cleanedup_nickname(nickname, sizeof(buffer) - 12);
nn_entry->next = nicknamelist;
nicknamelist = nn_entry;
- snprintf(buffer, 80, "{%08x,%s}", deviceid, nn_entry->nickname);
+ snprintf(buffer, sizeof(buffer), "{%08x,%s}", deviceid, nn_entry->nickname);
nicknamestring = realloc(nicknamestring, strlen(nicknamestring) + strlen(buffer) + 1);
strcat(nicknamestring, buffer);
if (change_conf)