Browse Source

fix invalid free of duplocale object when malloc has been replaced

newlocale and freelocale use __libc_malloc and __libc_free, but
duplocale used malloc. If malloc was replaced, this resulted in
invalid free using the wrong allocator when passing the result of
duplocale to freelocale.

Instead, use libc-internal malloc for duplocale.

This bug was introduced by commit
1e4204d522.
master
Isaiah Poston 4 years ago
committed by Rich Felker
parent
commit
6d8a515796
  1. 5
      src/locale/duplocale.c

5
src/locale/duplocale.c

@ -3,6 +3,11 @@
#include "locale_impl.h"
#include "libc.h"
#define malloc __libc_malloc
#define calloc undef
#define realloc undef
#define free undef
locale_t __duplocale(locale_t old)
{
locale_t new = malloc(sizeof *new);

Loading…
Cancel
Save