X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fprocesses.c;h=24dbf49299edfcaa964ce54fd8a5cf6ce7d695fd;hb=71e07cf654c476ab13bf30421524b442cc9ad5a7;hp=a6c50965a041ce921c6d5cdd0cac342f33ad3adf;hpb=746a2c1d4d472f4eb86f88fe5b8a19f581eac451;p=collectd.git diff --git a/src/processes.c b/src/processes.c index a6c50965..24dbf492 100644 --- a/src/processes.c +++ b/src/processes.c @@ -1031,9 +1031,9 @@ int ps_read_process (int pid, procstat_t *ps, char *state) char *fields[64]; char fields_len; - int buffer_len; + size_t buffer_len; - char *buffer_ptr; + char *buffer_ptr; size_t name_start_pos; size_t name_end_pos; size_t name_len; @@ -1044,14 +1044,16 @@ int ps_read_process (int pid, procstat_t *ps, char *state) long long unsigned vmem_rss; long long unsigned stack_size; + ssize_t status; + memset (ps, 0, sizeof (procstat_t)); ssnprintf (filename, sizeof (filename), "/proc/%i/stat", pid); - buffer_len = read_file_contents (filename, - buffer, sizeof(buffer) - 1); - if (buffer_len <= 0) + status = read_file_contents (filename, buffer, sizeof(buffer) - 1); + if (status <= 0) return (-1); + buffer_len = (size_t) status; buffer[buffer_len] = 0; /* The name of the process is enclosed in parens. Since the name can @@ -1328,16 +1330,16 @@ static const char *ps_get_cmdline (long pid, /* {{{ */ { char path[PATH_MAX]; psinfo_t info; - int status; + ssize_t status; snprintf(path, sizeof (path), "/proc/%li/psinfo", pid); status = read_file_contents (path, (void *) &info, sizeof (info)); - if (status != sizeof (info)) + if ((status < 0) || (((size_t) status) != sizeof (info))) { ERROR ("processes plugin: Unexpected return value " "while reading \"%s\": " - "Returned %i but expected %zu.", + "Returned %zd but expected %zu.", path, status, buffer_size); return (NULL); } @@ -1849,6 +1851,7 @@ static int ps_read (void) continue; } + memset (&pse, 0, sizeof (pse)); pse.id = pid; pse.age = 0; @@ -2126,6 +2129,7 @@ static int ps_read (void) } } /* if (process has argument list) */ + memset (&pse, 0, sizeof (pse)); pse.id = procs[i].p_pid; pse.age = 0; @@ -2155,6 +2159,9 @@ static int ps_read (void) pse.io_syscr = -1; pse.io_syscw = -1; + pse.cswitch_vol = -1; + pse.cswitch_invol = -1; + ps_list_add (procs[i].p_comm, have_cmdline ? cmdline : NULL, &pse); } /* if ((proc_ptr == NULL) || (proc_ptr->p_pid != procs[i].p_pid)) */ @@ -2370,6 +2377,7 @@ static int ps_read (void) continue; } + memset (&pse, 0, sizeof (pse)); pse.id = pid; pse.age = 0; @@ -2396,6 +2404,9 @@ static int ps_read (void) pse.io_syscr = ps.io_syscr; pse.io_syscw = ps.io_syscw; + pse.cswitch_vol = -1; + pse.cswitch_invol = -1; + switch (state) { case 'R': running++; break;