diff options
author | DJ Delorie <dj@delorie.com> | 2018-11-20 13:24:09 -0500 |
---|---|---|
committer | DJ Delorie <dj@delorie.com> | 2018-11-20 14:01:18 -0500 |
commit | 481a6cf0c24f02f251d7cd0b776c12d00e6b144f (patch) | |
tree | 9c46bb1ee655ce0cccd1096053471a2cee5f8ab4 /dlfcn | |
parent | 2c7078bfb9cc426433ac08d951e24c29c01b5f7d (diff) | |
download | glibc-481a6cf0c24f02f251d7cd0b776c12d00e6b144f.tar.gz glibc-481a6cf0c24f02f251d7cd0b776c12d00e6b144f.tar.xz glibc-481a6cf0c24f02f251d7cd0b776c12d00e6b144f.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; + } } } |