Fix reading numeric values from GNU BUILD NOTEs.
authorNick Clifton <nickc@redhat.com>
Mon, 6 Mar 2017 17:21:04 +0000 (17:21 +0000)
committerNick Clifton <nickc@redhat.com>
Mon, 6 Mar 2017 17:21:04 +0000 (17:21 +0000)
* 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.

binutils/ChangeLog
binutils/readelf.c

index 4e3f78a5c6cbe9275cd9be9a888292c4b24b0df7..6a1c2693ed68debad1756251f6f3d64b25155511 100644 (file)
@@ -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.
index 3bae045ec8b27eb4139c99f796ed5460e1a8b952..9ed8d41f914c5a4f1b2e6d94f29f8e70e37273ec 100644 (file)
@@ -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);  */