readlink() truncates and does not null terminate the string when more
bytes would be written than available. Just increase the char array by
one and assume that there is a problem when all bytes are needed.
Coverity: #
1330087, #
1329991
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
#include <syslog.h>
-static char buf[PATH_MAX];
+static char buf[PATH_MAX + 1];
static char buf2[PATH_MAX];
static unsigned int mode = 0600;
strcpy(path, dp->d_name);
len = readlink(buf2, buf, sizeof(buf));
- if (len <= 0)
+ if (len <= 0 || len == sizeof(buf))
continue;
buf[len] = 0;