From 79a964dca572024447adf92e50959dc88aa4f27a Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 6 Mar 2017 17:21:04 +0000 Subject: [PATCH] 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. --- 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 + + * 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 * 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); */ -- 2.7.4