summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Small <csmall@enc.com.au>2014-05-22 21:56:42 +1000
committerCraig Small <csmall@enc.com.au>2014-05-22 21:56:42 +1000
commit62e2d2d88e471390641bdb686a42598edddb45ab (patch)
tree345d91342789e54c18ea3a1a844bb153af7d211d
parent7e6abc85011baedd81ceda824921357ac175f57e (diff)
Fix some segfaults due to freeing too early
-rw-r--r--src/killall.c3
-rw-r--r--src/prtstat.c2
2 files changed, 2 insertions, 3 deletions
diff --git a/src/killall.c b/src/killall.c
index b1a6d18..1b8e878 100644
--- a/src/killall.c
+++ b/src/killall.c
@@ -438,7 +438,6 @@ kill_all (int signal, int names, char **namelist, struct passwd *pwent)
break;
}
}
- free(command_buf);
(void) fclose(file);
if (exact && !okay)
{
@@ -529,7 +528,6 @@ kill_all (int signal, int names, char **namelist, struct passwd *pwent)
found_name = j;
break;
}
- free(reglist);
free(name_len);
if (names && found_name==-1)
@@ -571,6 +569,7 @@ kill_all (int signal, int names, char **namelist, struct passwd *pwent)
fprintf (stderr, "%s(%d): %s\n", got_long ? command :
comm, id, strerror (errno));
}
+ free(reglist);
free(pgids);
if (!quiet)
for (i = 0; i < names; i++)
diff --git a/src/prtstat.c b/src/prtstat.c
index 0a6ace4..fee5f61 100644
--- a/src/prtstat.c
+++ b/src/prtstat.c
@@ -214,7 +214,7 @@ static void print_stat(const int pid, const opt_type options)
char *bptr;
FILE *fp;
- struct proc_info *pr;
+ struct proc_info *pr = NULL;
if ( (asprintf(&pathname, "/proc/%d/stat",(int)pid)) < 0) {
perror(_("asprintf in print_stat failed.\n"));