avoid a few strncpy-induced buffer overruns
authorJim Meyering <meyering@sourceware.org>
Wed, 25 Apr 2012 08:16:43 +0000 (08:16 +0000)
committerJim Meyering <meyering@sourceware.org>
Wed, 25 Apr 2012 08:16:43 +0000 (08:16 +0000)
* procfs.c (procfs_make_note_section): Be sure to NUL-terminate
fname and psargs before trying to concatenate.
* tui/tui-stack.c (tui_get_function_from_frame): NUL-terminate
"name" before applying strchr.

gdb/ChangeLog
gdb/procfs.c
gdb/tui/tui-stack.c

index 8babaaa..43d590f 100644 (file)
@@ -1,3 +1,11 @@
+2012-04-24  Jim Meyering  <meyering@redhat.com>
+
+       avoid a few strncpy-induced buffer overruns
+       * procfs.c (procfs_make_note_section): Be sure to NUL-terminate
+       fname and psargs before trying to concatenate.
+       * tui/tui-stack.c (tui_get_function_from_frame): NUL-terminate
+       "name" before applying strchr.
+
 2012-04-25  Siva Chandra Reddy  <sivachandra@google.com>
 
        * CONTRIBUTE: Use unified diff instead of context diff when
index cb4bc7c..d7c2946 100644 (file)
@@ -5725,8 +5725,9 @@ procfs_make_note_section (bfd *obfd, int *note_size)
   if (get_exec_file (0))
     {
       strncpy (fname, lbasename (get_exec_file (0)), sizeof (fname));
-      strncpy (psargs, get_exec_file (0),
-              sizeof (psargs));
+      fname[sizeof (fname) - 1] = 0;
+      strncpy (psargs, get_exec_file (0), sizeof (psargs));
+      psargs[sizeof (psargs) - 1] = 0;
 
       inf_args = get_inferior_args ();
       if (inf_args && *inf_args &&
index ef50a98..262a6bf 100644 (file)
@@ -228,6 +228,7 @@ tui_get_function_from_frame (struct frame_info *fi)
   if (*p == '<')
     p++;
   strncpy (name, p, sizeof (name) - 1);
+  name[sizeof (name) - 1] = 0;
   p = strchr (name, '(');
   if (!p)
     p = strchr (name, '>');