[binutils-gdb] Fix reading numeric values from GNU BUILD NOTEs.

Nick Clifton nickc@sourceware.org
Mon Mar 6 17:21:00 GMT 2017


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

commit 79a964dca572024447adf92e50959dc88aa4f27a
Author: Nick Clifton <nickc@redhat.com>
Date:   Mon Mar 6 17:21:04 2017 +0000

    Fix reading numeric values from GNU BUILD NOTEs.
    
    	* readelf.c (print_gnu_build_attribute_name): Read byte values
    	from the name string as unsigned bytes.
    	(process_notes_at): Use memcpy to copy an unterminated name
    	string.

Diff:
---
 binutils/ChangeLog | 7 +++++++
 binutils/readelf.c | 6 ++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 4e3f78a..6a1c269 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,10 @@
+2017-03-06  Nick Clifton  <nickc@redhat.com>
+
+	* readelf.c (print_gnu_build_attribute_name): Read byte values
+	from the name string as unsigned bytes.
+	(process_notes_at): Use memcpy to copy an unterminated name
+	string.
+
 2017-03-06  Sam Thursfield  <sam.thursfield@codethink.co.uk>
 
 	* configure.ac (AC_CHECK_DECLS): Add asprintf.
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 3bae045..9ed8d41 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -16768,7 +16768,9 @@ print_gnu_build_attribute_name (Elf_Internal_Note * pnote)
 
 	while (bytes --)
 	  {
-	    val |= ((* name ++) << shift);
+	    unsigned long byte = (* name ++) & 0xff;
+
+	    val |= byte << shift;
 	    shift += 8;
 	  }
 
@@ -17042,7 +17044,7 @@ process_notes_at (FILE *              file,
 	      break;
 	    }
 
-	  strncpy (temp, inote.namedata, inote.namesz);
+	  memcpy (temp, inote.namedata, inote.namesz);
 	  temp[inote.namesz] = 0;
 
 	  /* warn (_("'%s' NOTE name not properly null terminated\n"), temp);  */



More information about the Binutils-cvs mailing list