public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] Avoid stringop-truncation errors
@ 2020-03-20 14:36 Tom Tromey
  0 siblings, 0 replies; only message in thread
From: Tom Tromey @ 2020-03-20 14:36 UTC (permalink / raw)
  To: gdb-cvs

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="us-ascii", Size: 3475 bytes --]

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

commit f67210ff1c4200ea668189d086c6b39145cd876f
Author: Tom Tromey <tromey@adacore.com>
Date:   Fri Mar 20 07:30:13 2020 -0600

    Avoid stringop-truncation errors
    
    I configured with -fsanitize=address and built gdb.  linux-tdep.c and
    ada-tasks.c failed to build due to some stringop-truncation errors,
    e.g.:
    
    In function ‘char* strncpy(char*, const char*, size_t)’,
        inlined from ‘int linux_fill_prpsinfo(elf_internal_linux_prpsinfo*)’ at ../../binutils-gdb/gdb/linux-tdep.c:1742:11,
        inlined from ‘char* linux_make_corefile_notes(gdbarch*, bfd*, int*)’ at ../../binutils-gdb/gdb/linux-tdep.c:1878:27:
    /usr/include/bits/string_fortified.h:106:34: error: ‘char* __builtin_strncpy(char*, const char*, long unsigned int)’ specified bound 81 equals destination size [-Werror=stringop-truncation]
    
    This patch fixes the problem by using "sizeof - 1" in the call to
    strndup, as recommended in the GCC manual.  This doesn't make a
    difference here because the next line, in all cases, sets the final
    element to '\0' anyway.
    
    gdb/ChangeLog
    2020-03-20  Tom Tromey  <tromey@adacore.com>
    
            * ada-tasks.c (read_atcb): Use smaller length in strncpy call.
            * linux-tdep.c (linux_fill_prpsinfo): Use smaller length in
            strncpy call.

Diff:
---
 gdb/ChangeLog    | 6 ++++++
 gdb/ada-tasks.c  | 3 ++-
 gdb/linux-tdep.c | 4 ++--
 3 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index f1b007b1ba3..583ec9c81e3 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,9 @@
+2020-03-20  Tom Tromey  <tromey@adacore.com>
+
+	* ada-tasks.c (read_atcb): Use smaller length in strncpy call.
+	* linux-tdep.c (linux_fill_prpsinfo): Use smaller length in
+	strncpy call.
+
 2020-03-20  Tom Tromey  <tromey@adacore.com>
 
 	* symmisc.c (maintenance_print_one_line_table): Use ui_out.
diff --git a/gdb/ada-tasks.c b/gdb/ada-tasks.c
index 0a81c3c6922..589d5e84e0a 100644
--- a/gdb/ada-tasks.c
+++ b/gdb/ada-tasks.c
@@ -679,7 +679,8 @@ read_atcb (CORE_ADDR task_id, struct ada_task_info *task_info)
 		  task_name = p + 2;
 
 	      /* Copy the task name.  */
-	      strncpy (task_info->name, task_name, sizeof (task_info->name));
+	      strncpy (task_info->name, task_name,
+		       sizeof (task_info->name) - 1);
 	      task_info->name[sizeof (task_info->name) - 1] = 0;
 	    }
 	  else
diff --git a/gdb/linux-tdep.c b/gdb/linux-tdep.c
index b6374ce399c..e50946ce379 100644
--- a/gdb/linux-tdep.c
+++ b/gdb/linux-tdep.c
@@ -1729,7 +1729,7 @@ linux_fill_prpsinfo (struct elf_internal_linux_prpsinfo *p)
 
   /* Copying the program name.  Only the basename matters.  */
   basename = lbasename (fname.get ());
-  strncpy (p->pr_fname, basename, sizeof (p->pr_fname));
+  strncpy (p->pr_fname, basename, sizeof (p->pr_fname) - 1);
   p->pr_fname[sizeof (p->pr_fname) - 1] = '\0';
 
   infargs = get_inferior_args ();
@@ -1739,7 +1739,7 @@ linux_fill_prpsinfo (struct elf_internal_linux_prpsinfo *p)
   if (infargs != NULL)
     psargs = psargs + " " + infargs;
 
-  strncpy (p->pr_psargs, psargs.c_str (), sizeof (p->pr_psargs));
+  strncpy (p->pr_psargs, psargs.c_str (), sizeof (p->pr_psargs) - 1);
   p->pr_psargs[sizeof (p->pr_psargs) - 1] = '\0';
 
   xsnprintf (filename, sizeof (filename), "/proc/%d/stat", (int) pid);


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2020-03-20 14:36 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-20 14:36 [binutils-gdb] Avoid stringop-truncation errors Tom Tromey

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).