[binutils-gdb] libctf: fix dict leak on archive-wide symbol lookup error path

Nick Alcock nix@sourceware.org
Tue Jun 18 12:55:36 GMT 2024


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e3cd5660756223bbe4a2ab607ef019bbf5e9daf9

commit e3cd5660756223bbe4a2ab607ef019bbf5e9daf9
Author: Nick Alcock <nick.alcock@oracle.com>
Date:   Wed Jun 12 12:28:45 2024 +0100

    libctf: fix dict leak on archive-wide symbol lookup error path
    
    If a lookup fails for a reason unrelated to a lack of type data for this
    symbol, we return with an error; but we fail to close the dict we opened
    most recently, which is leaked.
    
    libctf/
            * ctf-archive.c (ctf_arc_lookup_sym_or_name): Close dict.

Diff:
---
 libctf/ctf-archive.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/libctf/ctf-archive.c b/libctf/ctf-archive.c
index f459c02e702..4744cb7a828 100644
--- a/libctf/ctf-archive.c
+++ b/libctf/ctf-archive.c
@@ -957,6 +957,7 @@ ctf_arc_lookup_sym_or_name (ctf_archive_t *wrapper, unsigned long symidx,
 	{
 	  if (errp)
 	    *errp = ctf_errno (fp);
+	  ctf_dict_close (fp);
 	  ctf_next_destroy (i);
 	  return NULL;				/* errno is set for us.  */
 	}


More information about the Binutils-cvs mailing list