[binutils-gdb] macro.c:871 heap-buffer-overflow

Alan Modra amodra@sourceware.org
Wed Dec 25 22:57:08 GMT 2024


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

commit 6d9b7667974372357fed1f02c54a805f8c21dcde
Author: Alan Modra <amodra@gmail.com>
Date:   Thu Dec 26 07:19:24 2024 +1030

    macro.c:871 heap-buffer-overflow
    
    PR 32391 commit 9f2e3c21f6 fallout again.  Also fix another 'macro'
    may be used uninitialized.

Diff:
---
 gas/macro.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gas/macro.c b/gas/macro.c
index 3d5a9f14341..ded0645be8d 100644
--- a/gas/macro.c
+++ b/gas/macro.c
@@ -868,7 +868,7 @@ sub_actual (size_t start, sb *in, sb *t, struct htab *formal_hash,
 	  /* The parent's FORMALs might contain parameters that need further
 	     substitution.  See gas/testsuite/gas/arm/macro-vld1.s for an
 	     example of this.  */
-	  if (strchr (add->ptr, '\\'))
+	  if (memchr (add->ptr, '\\', add->len))
 	    {
 	      sb newadd;
 
@@ -1485,7 +1485,7 @@ delete_macro (const char *name)
 	}
     }
 
-  if (macro == NULL)
+  if (j < 0)
     as_warn (_("Attempt to purge non-existing macro `%s'"), copy);
 
   free (copy);


More information about the Binutils-cvs mailing list