From: Nick Alcock Date: Wed, 13 Dec 2023 12:24:57 +0000 (+0000) Subject: libctf: don't leak the symbol name in the name->type cache X-Git-Tag: gdb-15-branchpoint~336 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ca019227843f62f5ac0a1c432680e3ca05c4377b;p=thirdparty%2Fbinutils-gdb.git libctf: don't leak the symbol name in the name->type cache This cache replaced a cache of symbol index->ctf_id_t. That cache was just an array, so it could get away with just being free()d, but the ctfi_symnamedicts cache that replaced it is a full dynhash with a dynamically-allocated string as the key. As such, it needs freeing with ctf_dynhash_destroy(), not just free(), or we leak parts of the underlying hashtab, and all the keys. libctf/ChangeLog: * ctf-archive.c (ctf_arc_flush_caches): Fix leak. --- diff --git a/libctf/ctf-archive.c b/libctf/ctf-archive.c index a0ea838ddc4..a88c6135e1a 100644 --- a/libctf/ctf-archive.c +++ b/libctf/ctf-archive.c @@ -699,7 +699,7 @@ void ctf_arc_flush_caches (ctf_archive_t *wrapper) { free (wrapper->ctfi_symdicts); - free (wrapper->ctfi_symnamedicts); + ctf_dynhash_destroy (wrapper->ctfi_symnamedicts); ctf_dynhash_destroy (wrapper->ctfi_dicts); wrapper->ctfi_symdicts = NULL; wrapper->ctfi_symnamedicts = NULL;