This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Fix GCC 8's -Wstringop-overflow on bfd/coff-rs6000.c


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

commit 8278e7cec35536046caf596f4e55c7c037d06cf0
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Tue Feb 6 10:37:04 2018 -0500

    Fix GCC 8's -Wstringop-overflow on bfd/coff-rs6000.c
    
    GCC 8 will bring a new warning option which will detect possible
    overflow and truncation on string manipulation functions.  For more
    details, see:
    
      https://gcc.gnu.org/ml/gcc-patches/2017-08/msg00471.html
    
    While compiling BFD with it, I can see one place on bfd/coff-rs6000.c
    where the warning is triggered.  This:
    
      (void) strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
    
    will not include the trailing NUL on fhdr.magic, but that's fine
    because it's a magic number.  The fix is trivial: just use memcpy
    instead.
    
    OK to push?
    
    2018-02-06  Sergio Durigan Junior  <sergiodj@redhat.com>
    
    	* coff-rs6000.c (xcoff_write_archive_contents_old): Use
    	'memcpy' instead of 'strncpy' when writing the magic number.

Diff:
---
 bfd/ChangeLog     | 5 +++++
 bfd/coff-rs6000.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 584f087..14ed147 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,8 @@
+2018-02-06  Sergio Durigan Junior  <sergiodj@redhat.com>
+
+	* coff-rs6000.c (xcoff_write_archive_contents_old): Use
+	'memcpy' instead of 'strncpy' when writing the magic number.
+
 2018-02-06  Nick Clifton  <nickc@redhat.com>
 
 	PR 22794
diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
index 2fc1feb..d02835e 100644
--- a/bfd/coff-rs6000.c
+++ b/bfd/coff-rs6000.c
@@ -2090,7 +2090,7 @@ xcoff_write_archive_contents_old (bfd *abfd)
   char decbuf[XCOFFARMAG_ELEMENT_SIZE + 1];
 
   memset (&fhdr, 0, sizeof fhdr);
-  (void) strncpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
+  (void) memcpy (fhdr.magic, XCOFFARMAG, SXCOFFARMAG);
   sprintf (fhdr.firstmemoff, "%d", SIZEOF_AR_FILE_HDR);
   sprintf (fhdr.freeoff, "%d", 0);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]