Replace sprintf with xsnprintf in nat/linux-osdata.c
authorYao Qi <yao.qi@linaro.org>
Fri, 23 Sep 2016 16:27:26 +0000 (17:27 +0100)
committerYao Qi <yao.qi@linaro.org>
Fri, 23 Sep 2016 16:27:26 +0000 (17:27 +0100)
I see the following build warning when I build GDB with GCC trunk.

../../binutils-gdb/gdb/nat/linux-osdata.c: In function ‘LONGEST linux_xfer_osdata_fds(gdb_byte*, ULONGEST, ULONGEST)’:
../../binutils-gdb/gdb/nat/linux-osdata.c:767:1: error: ‘%s’ directive writing between 0 and 255 bytes into a region of size 11 [-Werror=format-length=]
 linux_xfer_osdata_fds (gdb_byte *readbuf,
 ^~~~~~~~~~~~~~~~~~~~~
../../binutils-gdb/gdb/nat/linux-osdata.c:800:51: note: format output between 7 and 262 bytes into a destination of size 17
        sprintf (procentry, "/proc/%s", dp->d_name);
                                                   ^
../../binutils-gdb/gdb/nat/linux-osdata.c: In function ‘LONGEST linux_xfer_osdata_threads(gdb_byte*, ULONGEST, ULONGEST)’:
../../binutils-gdb/gdb/nat/linux-osdata.c:555:1: error: ‘%s’ directive writing between 0 and 255 bytes into a region of size 11 [-Werror=format-length=]
 linux_xfer_osdata_threads (gdb_byte *readbuf,
 ^~~~~~~~~~~~~~~~~~~~~~~~~
../../binutils-gdb/gdb/nat/linux-osdata.c:588:51: note: format output between 7 and 262 bytes into a destination of size 17
        sprintf (procentry, "/proc/%s", dp->d_name);
                                                   ^
cc1plus: all warnings being treated as errors

The warning is a false positive, but we can workaround it by replacing
sprintf with xsnprintf.  On the other hand, it is always preferred to
use xsnprintf.

gdb:

2016-09-23  Yao Qi  <yao.qi@linaro.org>

* nat/linux-osdata.c (linux_xfer_osdata_threads): Replace
sprintf with xsnprintf.
(linux_xfer_osdata_fds): Likewise.

gdb/ChangeLog
gdb/nat/linux-osdata.c

index 3826299bd240fa550ef63ba1acac807411e6e3e1..ce63f93b46dd68f29ecaa389b5fba6c15ef57a31 100644 (file)
@@ -1,3 +1,9 @@
+2016-09-23  Yao Qi  <yao.qi@linaro.org>
+
+       * nat/linux-osdata.c (linux_xfer_osdata_threads): Replace
+       sprintf with xsnprintf.
+       (linux_xfer_osdata_fds): Likewise.
+
 2016-09-23  Pedro Alves  <palves@redhat.com>
 
        * Makefile.in (SFILES): Add common/new-op.c.
index bf98c96401f3a9402e391229a11839ae1108058e..5b407a478f4fa550696a113c9cfd7e02bbd1664c 100644 (file)
@@ -585,7 +585,8 @@ linux_xfer_osdata_threads (gdb_byte *readbuf,
                  || NAMELEN (dp) > sizeof ("4294967295") - 1)
                continue;
 
-             sprintf (procentry, "/proc/%s", dp->d_name);
+             xsnprintf (procentry, sizeof (procentry), "/proc/%s",
+                        dp->d_name);
              if (stat (procentry, &statbuf) == 0
                  && S_ISDIR (statbuf.st_mode))
                {
@@ -797,7 +798,8 @@ linux_xfer_osdata_fds (gdb_byte *readbuf,
                  || NAMELEN (dp) > sizeof ("4294967295") - 1)
                continue;
 
-             sprintf (procentry, "/proc/%s", dp->d_name);
+             xsnprintf (procentry, sizeof (procentry), "/proc/%s",
+                        dp->d_name);
              if (stat (procentry, &statbuf) == 0
                  && S_ISDIR (statbuf.st_mode))
                {