[PATCH] Reserve enough memory when storing a DC's nickname

Lubomir I. Ivanov neolit123 at gmail.com
Sat Dec 15 03:46:53 PST 2012


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

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 160 bytes.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
 gtk-gui.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gtk-gui.c b/gtk-gui.c
index f3646b0..6b33718 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)
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list