From 1ee3c71d5861c161ab210102b608ff719e5cc6fd Mon Sep 17 00:00:00 2001 From: Morris Jette <jette@schedmd.com> Date: Wed, 8 Jun 2016 15:17:10 -0700 Subject: [PATCH] Fix for uninitialized variable --- src/slurmd/slurmstepd/pdebug.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/slurmd/slurmstepd/pdebug.c b/src/slurmd/slurmstepd/pdebug.c index e1b4b345a0a..bffccd69dfa 100644 --- a/src/slurmd/slurmstepd/pdebug.c +++ b/src/slurmd/slurmstepd/pdebug.c @@ -142,24 +142,32 @@ pdebug_stop_current(stepd_step_rec_t *job) static bool _pid_to_wake(pid_t pid) { #ifdef CLONE_PTRACE - char proc_stat[1024], proc_name[22], state[1], *str_ptr; + char *proc_stat, proc_name[22], state[1], *str_ptr; int len, proc_fd, ppid, pgrp, session, tty, tpgid; long unsigned flags; sprintf (proc_name, "/proc/%d/stat", (int) pid); if ((proc_fd = open(proc_name, O_RDONLY, 0)) == -1) return false; /* process is now gone */ - len = read(proc_fd, proc_stat, sizeof(proc_stat)); + proc_stat = xmalloc(4096); + len = read(proc_fd, proc_stat, 4096); close(proc_fd); - if (len < 14) + if (len < 14) { + xfree(proc_stat); return false; + } /* skip over "PID (CMD) " */ - if ((str_ptr = (char *)strrchr(proc_stat, ')')) == NULL) + if ((str_ptr = (char *)strrchr(proc_stat, ')')) == NULL) { + xfree(proc_stat); return false; + } if (sscanf(str_ptr + 2, "%c %d %d %d %d %d %lu ", - state, &ppid, &pgrp, &session, &tty, &tpgid, &flags) != 7) + state, &ppid, &pgrp, &session, &tty, &tpgid, &flags) != 7) { + xfree(proc_stat); return false; + } + xfree(proc_stat); if ((flags & CLONE_PTRACE) == 0) return true; return false; -- GitLab