diff options
author | DJ Delorie <dj@delorie.com> | 2018-11-20 13:24:09 -0500 |
---|---|---|
committer | DJ Delorie <dj@delorie.com> | 2018-11-20 13:24:09 -0500 |
commit | bcdaad21d4635931d1bd3b54a7894276925d081d (patch) | |
tree | 283d6b7b18006862bbac9ac711834b70dabd629f /dlfcn | |
parent | [AArch64] Adjust writeback in non-zero memset (diff) | |
download | glibc-bcdaad21d4635931d1bd3b54a7894276925d081d.tar.gz glibc-bcdaad21d4635931d1bd3b54a7894276925d081d.tar.bz2 glibc-bcdaad21d4635931d1bd3b54a7894276925d081d.zip |
malloc: tcache double free check
* malloc/malloc.c (tcache_entry): Add key field.
(tcache_put): Set it.
(tcache_get): Likewise.
(_int_free): Check for double free in tcache.
* malloc/tst-tcfree1.c: New.
* malloc/tst-tcfree2.c: New.
* malloc/Makefile: Run the new tests.
* manual/probes.texi: Document memory_tcache_double_free probe.
* dlfcn/dlerror.c (check_free): Prevent double frees.
Diffstat (limited to 'dlfcn')
-rw-r--r-- | dlfcn/dlerror.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/dlfcn/dlerror.c b/dlfcn/dlerror.c index 33574faab6..96bf925333 100644 --- a/dlfcn/dlerror.c +++ b/dlfcn/dlerror.c @@ -198,7 +198,10 @@ check_free (struct dl_action_result *rec) Dl_info info; if (_dl_addr (check_free, &info, &map, NULL) != 0 && map->l_ns == 0) #endif - free ((char *) rec->errstring); + { + free ((char *) rec->errstring); + rec->errstring = NULL; + } } } |