Commit f80694de authored by Cyrill Gorcunov's avatar Cyrill Gorcunov

proc_pase: Make sure we may scan up to 15 symbols in name

And do not use strcpy, better to stick with strncpy.

Moreover, to be on a safe side make proc internal
buffer big enough even for "(%16s)" format, it's
hardly possible that the kernel ever change stat
format but just to be on a safe side.
Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
parent a9969dcf
......@@ -449,7 +449,7 @@ static int get_task_stat(pid_t pid, int pid_dir, u8 *comm, u32 *flags,
if (ret < 0)
goto err;
strcpy((char *)comm, pps_buf.comm);
strncpy((char *)comm, pps_buf.comm, TASK_COMM_LEN);
*flags = pps_buf.flags;
*start_code = pps_buf.start_code;
*end_code = pps_buf.end_code;
......
#ifndef PROC_PARSE_H__
#define PROC_PARSE_H__
#define TASK_COMM_LEN 16
#define TASK_COMM_LEN_FMT "(%15s"
#define PROC_TASK_COMM_LEN 32
#define PROC_TASK_COMM_LEN_FMT "(%31s"
struct proc_pid_stat {
int pid;
char comm[TASK_COMM_LEN];
char comm[PROC_TASK_COMM_LEN];
char state;
int ppid;
int pgid;
......
......@@ -188,7 +188,7 @@ int parse_pid_stat(pid_t pid, int pid_dir, struct proc_pid_stat *s)
memset(s, 0, sizeof(*s));
n = fscanf(f,
"%d " TASK_COMM_LEN_FMT " %c %d %d %d %d %d %u %lu %lu %lu %lu "
"%d " PROC_TASK_COMM_LEN_FMT " %c %d %d %d %d %d %u %lu %lu %lu %lu "
"%lu %lu %ld %ld %ld %ld %d %d %llu %lu %ld %lu %lu %lu %lu "
"%lu %lu %lu %lu %lu %lu %lu %lu %lu %d %d %u %u %llu %lu %ld "
"%lu %lu %lu",
......@@ -245,7 +245,7 @@ int parse_pid_stat(pid_t pid, int pid_dir, struct proc_pid_stat *s)
return -1;
}
s->comm[TASK_COMM_LEN-1] = '\0';
s->comm[PROC_TASK_COMM_LEN-1] = '\0';
tok = strchr(s->comm, ')');
if (tok)
*tok = '\0';
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment