gcc 7.3.1 provides the following warning when compiling numastat.c:

numastat.c: In function ‘add_pids_from_pattern_search’:
numastat.c:1316:41: warning: ‘%s’ directive output may be truncated writing
up to 255 bytes into a region of size 58 [-Wformat-truncation=]
   snprintf(fname, sizeof(fname), "/proc/%s/cmdline", namelist[ix]->d_name);
                                         ^~
numastat.c:1316:3: note: ‘snprintf’ output between 15 and 270 bytes into a
destination of size 64
   snprintf(fname, sizeof(fname), "/proc/%s/cmdline", namelist[ix]->d_name);
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is valid - namelist[ix]->d_name is size 256 bytes, we have some extra
bytes as part of our format string.  Our destination buffer, 'fname', is
only 64 bytes wide.

Signed-off-by: Ross Zwisler <[email protected]>
---
 numastat.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/numastat.c b/numastat.c
index e0a5639..2d413df 100644
--- a/numastat.c
+++ b/numastat.c
@@ -1312,7 +1312,7 @@ void add_pids_from_pattern_search(char *pattern) {
                }
                // Next copy cmdline file contents onto end of buffer.  Do it a
                // character at a time to convert nulls to spaces.
-               char fname[64];
+               char fname[272];
                snprintf(fname, sizeof(fname), "/proc/%s/cmdline", 
namelist[ix]->d_name);
                FILE *fs = fopen(fname, "r");
                if (fs) {
-- 
2.14.3

_______________________________________________
Linux-nvdimm mailing list
[email protected]
https://lists.01.org/mailman/listinfo/linux-nvdimm

Reply via email to