mirror of git://sourceware.org/git/glibc.git
[BZ #14277]
* intl/dcigettext.c (_nl_find_msg): Avoid use after potential free. Simplify list management for _LIBC case.
This commit is contained in:
parent
b7abb4bf78
commit
006dd86111
|
@ -1,3 +1,9 @@
|
||||||
|
2012-06-21 Jeff Law <law@redhat.com>
|
||||||
|
|
||||||
|
[BZ #14277]
|
||||||
|
* intl/dcigettext.c (_nl_find_msg): Avoid use after potential
|
||||||
|
free. Simplify list management for _LIBC case.
|
||||||
|
|
||||||
2012-06-21 Joseph Myers <joseph@codesourcery.com>
|
2012-06-21 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
[BZ #14273]
|
[BZ #14273]
|
||||||
|
|
2
NEWS
2
NEWS
|
@ -30,7 +30,7 @@ Version 2.16
|
||||||
13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036, 14040, 14043,
|
13983, 13986, 13996, 14012, 14027, 14033, 14034, 14036, 14040, 14043,
|
||||||
14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064, 14075, 14080,
|
14044, 14048, 14049, 14050, 14053, 14055, 14059, 14064, 14075, 14080,
|
||||||
14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123, 14134, 14153,
|
14083, 14103, 14104, 14109, 14112, 14117, 14122, 14123, 14134, 14153,
|
||||||
14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273, 14278
|
14183, 14188, 14199, 14210, 14218, 14229, 14241, 14273, 14277, 14278
|
||||||
|
|
||||||
* Support for the x32 ABI on x86-64 added. The x32 target is selected by
|
* Support for the x32 ABI on x86-64 added. The x32 target is selected by
|
||||||
configuring glibc with:
|
configuring glibc with:
|
||||||
|
|
|
@ -1155,7 +1155,7 @@ _nl_find_msg (domain_file, domainbinding, msgid, convert, lengthp)
|
||||||
freemem_size);
|
freemem_size);
|
||||||
# ifdef _LIBC
|
# ifdef _LIBC
|
||||||
if (newmem != NULL)
|
if (newmem != NULL)
|
||||||
transmem_list = transmem_list->next;
|
transmem_list = newmem;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
struct transmem_list *old = transmem_list;
|
struct transmem_list *old = transmem_list;
|
||||||
|
@ -1170,6 +1170,12 @@ _nl_find_msg (domain_file, domainbinding, msgid, convert, lengthp)
|
||||||
malloc_count = 1;
|
malloc_count = 1;
|
||||||
freemem_size = INITIAL_BLOCK_SIZE;
|
freemem_size = INITIAL_BLOCK_SIZE;
|
||||||
newmem = (transmem_block_t *) malloc (freemem_size);
|
newmem = (transmem_block_t *) malloc (freemem_size);
|
||||||
|
# ifdef _LIBC
|
||||||
|
/* Add the block to the list of blocks we have to free
|
||||||
|
at some point. */
|
||||||
|
newmem->next = transmem_list;
|
||||||
|
transmem_list = newmem;
|
||||||
|
# endif
|
||||||
}
|
}
|
||||||
if (__builtin_expect (newmem == NULL, 0))
|
if (__builtin_expect (newmem == NULL, 0))
|
||||||
{
|
{
|
||||||
|
@ -1180,11 +1186,6 @@ _nl_find_msg (domain_file, domainbinding, msgid, convert, lengthp)
|
||||||
}
|
}
|
||||||
|
|
||||||
# ifdef _LIBC
|
# ifdef _LIBC
|
||||||
/* Add the block to the list of blocks we have to free
|
|
||||||
at some point. */
|
|
||||||
newmem->next = transmem_list;
|
|
||||||
transmem_list = newmem;
|
|
||||||
|
|
||||||
freemem = (unsigned char *) newmem->data;
|
freemem = (unsigned char *) newmem->data;
|
||||||
freemem_size -= offsetof (struct transmem_list, data);
|
freemem_size -= offsetof (struct transmem_list, data);
|
||||||
# else
|
# else
|
||||||
|
|
Loading…
Reference in New Issue