[binutils-gdb] Another ldelf_before_allocation leak

Alan Modra amodra@sourceware.org
Thu Jan 23 06:46:41 GMT 2025


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

commit a62e0f8597b13b48c16a889a3afb993bfce75f24
Author: Alan Modra <amodra@gmail.com>
Date:   Wed Jan 22 07:39:53 2025 +1030

    Another ldelf_before_allocation leak
    
    This fixes an even more obvious leak.
    
            * ldelf.c (ldelf_before_allocation): Free copied elf_dt_audit.
            Simplify loop.

Diff:
---
 ld/ldelf.c | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/ld/ldelf.c b/ld/ldelf.c
index f56a62780f0..dbc3d77d47b 100644
--- a/ld/ldelf.c
+++ b/ld/ldelf.c
@@ -1821,24 +1821,22 @@ ldelf_before_allocation (char **audit, char **depaudit,
 	   a dep audit entry.  */
 	if (audit_libs && *audit_libs != '\0')
 	  {
-	    char *cp = xstrdup (audit_libs);
+	    char *copy_audit_libs = xstrdup (audit_libs);
+	    char *cp = copy_audit_libs;
 	    do
 	      {
-		int more = 0;
 		char *cp2 = strchr (cp, config.rpath_separator);
 
 		if (cp2)
-		  {
-		    *cp2 = '\0';
-		    more = 1;
-		  }
+		  *cp2++ = '\0';
 
-		if (cp != NULL && *cp != '\0')
+		if (*cp != '\0')
 		  ldelf_append_to_separated_string (depaudit, cp);
 
-		cp = more ? ++cp2 : NULL;
+		cp = cp2;
 	      }
 	    while (cp != NULL);
+	    free (copy_audit_libs);
 	  }
       }


More information about the Binutils-cvs mailing list