[igt-dev] [PATCH V2 i-g-t 1/3] Avoid truncate string in __igt_lsof_fds

Rodrigo Siqueira rodrigosiqueiramelo at gmail.com
Sun Jun 17 00:34:14 UTC 2018


Note that 'proc_path' parameter in __igt_lsof_fds receives a string
which was initialized with the size of PATH_MAX and the local variable
'path' has the same size, but it also have to append: '/', '\0', and the
directory name. This situation caused the warning described below.

warning: ‘%s’ directive output may be truncated writing up to 255 bytes
into a region of size between 0 and 4095 [-Wformat-truncation=]
snprintf(path, sizeof(path), "%s/%s", proc_path, d->d_name);
note: ‘snprintf’ output between 2 and 4352 bytes into a destination of
size 4096 [..]

This commit fixes this problem by changing the string size passed by
__igt_lsoft to __igt_lsof_fds; basically, the max size for the string is
calculated in a directive and then used to declare the array.

Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo at gmail.com>
---
 lib/igt_aux.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lib/igt_aux.c b/lib/igt_aux.c
index acafb713..1ea52efe 100644
--- a/lib/igt_aux.c
+++ b/lib/igt_aux.c
@@ -48,6 +48,8 @@
 #include <sys/utsname.h>
 #include <termios.h>
 #include <assert.h>
+#include <math.h>
+#include <limits.h>
 
 #include <proc/readproc.h>
 #include <libudev.h>
@@ -71,6 +73,8 @@
 #include <libgen.h>   /* for dirname() */
 #endif
 
+#define MAX_CWD_LEN (unsigned int)(sizeof("/proc//cwd") + ceil(log10(INT_MAX)))
+
 /**
  * SECTION:igt_aux
  * @short_description: Auxiliary libraries and support functions
@@ -1485,7 +1489,7 @@ __igt_lsof(const char *dir)
 	PROCTAB *proc;
 	proc_t *proc_info;
 
-	char path[PATH_MAX];
+	char path[MAX_CWD_LEN];
 	char *name_lnk;
 	struct stat st;
 	int state = 0;
-- 
2.17.1



More information about the igt-dev mailing list