[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