char buf[PATH_MAX + 1];
char *filename;
+ if (!cmdline_size)
+ return -1;
+
snprintf(buf, sizeof(buf), "/proc/%d/cmdline", pid);
fd = open(buf, O_RDONLY);
if (fd < 0) {
if (ret < 0)
return -1;
- buf[PATH_MAX] = '\0';
-
filename = strrchr(buf, '/');
if (filename == NULL)
filename = buf;
else
filename = filename + 1;
- if (cmdline_size < strlen(filename) + 1) {
+ if ((cmdline_size - 1) < strlen(filename)) {
errno = EOVERFLOW;
return -1;
}
char buf[BUFF_MAX] = {0};
if (sys_read_buf(fname, buf) == 0) {
- strncpy(str, buf, strlen(buf));
+ snprintf(str, strlen(buf) + 1, "%s", buf);
return 0;
}