This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB 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 build with GCC 8: strncpy -> memcpy


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

commit 29f9a5673764c1b2711c0ceeba380a6ee764d1b2
Author: Yao Qi <yao.qi@linaro.org>
Date:   Wed Nov 22 12:22:11 2017 +0000

    Fix build with GCC 8: strncpy -> memcpy
    
    Recent gcc 8 trunk emits the warning below,
    
    ../../../binutils-gdb/gdb/gdbserver/remote-utils.c:1204:14: error: â??char* strncpy(char*, const char*, size_t)â?? output truncated before terminating nul copying 6 bytes from a string of the same length [-Werror=stringop-truncation]
          strncpy (buf, "watch:", 6);
          ~~~~~~~~^~~~~~~~~~~~~~~~~~
    
    ../../binutils-gdb/gdb/cli/cli-decode.c:1118:15: error: â??char* strncpy(char*, const char*, size_t)â?? specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
           strncpy (cmdtype1 + 1, cmdtype, len - 1);
           ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../binutils-gdb/gdb/cli/cli-decode.c:1110:16: note: length computed here
       len = strlen (cmdtype);
             ~~~~~~~^~~~~~~~~
    ../../binutils-gdb/gdb/cli/cli-decode.c:1120:15: error: â??char* strncpy(char*, const char*, size_t)â?? specified bound depends on the length of the source argument [-Werror=stringop-overflow=]
           strncpy (cmdtype2, cmdtype, len - 1);
           ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    ../../binutils-gdb/gdb/cli/cli-decode.c:1110:16: note: length computed here
       len = strlen (cmdtype);
             ~~~~~~~^~~~~~~~~
    
    ../../binutils-gdb/gdb/cp-namespace.c:1071:11: error: â??char* strncpy(char*, const char*, size_t)â?? output truncated before terminating nul copying 2 bytes from a string of the same length [-Werror=stringop-truncation]
       strncpy (full_name + scope_length, "::", 2);
       ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    This patch fixes it by using memcpy instead of strncpy.
    
    gdb:
    
    2017-11-22  Yao Qi  <yao.qi@linaro.org>
    
    	* cli/cli-decode.c (help_list): Use memcpy instead of strncpy.
    	* cp-namespace.c (cp_lookup_transparent_type_loop): Likewise.
    
    gdb/gdbserver:
    
    2017-11-22  Yao Qi  <yao.qi@linaro.org>
    
    	* remote-utils.c (prepare_resume_reply): Use memcpy.

Diff:
---
 gdb/ChangeLog                | 5 +++++
 gdb/cli/cli-decode.c         | 4 ++--
 gdb/cp-namespace.c           | 2 +-
 gdb/gdbserver/ChangeLog      | 4 ++++
 gdb/gdbserver/remote-utils.c | 2 +-
 5 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 1c77dea..a9e7528 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2017-11-22  Yao Qi  <yao.qi@linaro.org>
+
+	* cli/cli-decode.c (help_list): Use memcpy instead of strncpy.
+	* cp-namespace.c (cp_lookup_transparent_type_loop): Likewise.
+
 2017-11-21  Jerome Guitton  <guitton@adacore.com>
 
 	* ravenscar-thread.c (ravenscar_wait): Update inferior ptid
diff --git a/gdb/cli/cli-decode.c b/gdb/cli/cli-decode.c
index b911097..6140a17 100644
--- a/gdb/cli/cli-decode.c
+++ b/gdb/cli/cli-decode.c
@@ -1084,9 +1084,9 @@ help_list (struct cmd_list_element *list, const char *cmdtype,
   if (len)
     {
       cmdtype1[0] = ' ';
-      strncpy (cmdtype1 + 1, cmdtype, len - 1);
+      memcpy (cmdtype1 + 1, cmdtype, len - 1);
       cmdtype1[len] = 0;
-      strncpy (cmdtype2, cmdtype, len - 1);
+      memcpy (cmdtype2, cmdtype, len - 1);
       strcpy (cmdtype2 + len - 1, " sub");
     }
 
diff --git a/gdb/cp-namespace.c b/gdb/cp-namespace.c
index d8817c0..2a3ffef 100644
--- a/gdb/cp-namespace.c
+++ b/gdb/cp-namespace.c
@@ -1049,7 +1049,7 @@ cp_lookup_transparent_type_loop (const char *name,
 
   full_name = (char *) alloca (scope_length + 2 + strlen (name) + 1);
   strncpy (full_name, scope, scope_length);
-  strncpy (full_name + scope_length, "::", 2);
+  memcpy (full_name + scope_length, "::", 2);
   strcpy (full_name + scope_length + 2, name);
 
   return basic_lookup_transparent_type (full_name);
diff --git a/gdb/gdbserver/ChangeLog b/gdb/gdbserver/ChangeLog
index d891b2d..b53fe30 100644
--- a/gdb/gdbserver/ChangeLog
+++ b/gdb/gdbserver/ChangeLog
@@ -1,3 +1,7 @@
+2017-11-22  Yao Qi  <yao.qi@linaro.org>
+
+	* remote-utils.c (prepare_resume_reply): Use memcpy.
+
 2017-11-19  Simon Marchi  <simon.marchi@ericsson.com>
 
 	* linux-low.c (kill_one_lwp_callback): Return void, take
diff --git a/gdb/gdbserver/remote-utils.c b/gdb/gdbserver/remote-utils.c
index 2e4888a..2fdbb6f 100644
--- a/gdb/gdbserver/remote-utils.c
+++ b/gdb/gdbserver/remote-utils.c
@@ -1173,7 +1173,7 @@ prepare_resume_reply (char *buf, ptid_t ptid,
 	    CORE_ADDR addr;
 	    int i;
 
-	    strncpy (buf, "watch:", 6);
+	    memcpy (buf, "watch:", 6);
 	    buf += 6;
 
 	    addr = (*the_target->stopped_data_address) ();


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