[PATCH] Reserve enough memory when storing a DC's nickname
Lubomir I. Ivanov
neolit123 at gmail.com
Sat Dec 15 04:54:43 PST 2012
On 15 December 2012 13:46, Lubomir I. Ivanov <neolit123 at gmail.com> wrote:
> 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
>
look like i've set it 256 bytes instead of 160, oh well...
lubomir
--
More information about the subsurface
mailing list