[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#19578: Memory leaks in coreutils/lib/locale_charset.c
From: |
Pádraig Brady |
Subject: |
bug#19578: Memory leaks in coreutils/lib/locale_charset.c |
Date: |
Tue, 13 Jan 2015 10:02:59 +0000 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.3.0 |
On 13/01/15 04:06, Zhaopeng Li wrote:
> Platform: Ubuntu 14.10 64-bit
> Coreutils Version 8.23
>
>
>
> At line 534 of coreutils/lib/locale_charset.c, var ‘aliases' points to a
> buffer which is allocated using malloc() .
>
> This buffer is not freed when codeset is still an empty string after the loop
> (Line 534~542).
>
> So it will be leaked under such situation.
>
>
>
> Line 533 /* Resolve alias. */
> Line 534 for (aliases = get_charset_aliases ();
> *aliases != '\0';
> aliases += strlen (aliases) + 1, aliases += strlen (aliases) + 1)
> if (strcmp (codeset, aliases) == 0
> || (aliases[0] == '*' && aliases[1] == '\0'))
> {
> codeset = aliases + strlen (aliases) + 1;
> break;
> }
>
> /* Don't return an empty string. GNU libc and GNU libiconv interpret
> the empty string as denoting "the locale's character encoding",
> thus GNU libiconv would call this function a second time. */
> if (codeset[0] == '\0')
> codeset = "ASCII";
What reports this leak?
Note that file name is not present in coreutils?
The code you're referring to is:
http://git.sv.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/localcharset.c;h=b4af28cd#l588
Though aliases is never freed here, nor should it be.
What am I missing?
thanks,
Pádraig