@@ -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;
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@gmail.com> --- lib/igt_aux.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)