]> granicus.if.org Git - psmisc/commitdiff
Fix some segfaults due to freeing too early
authorCraig Small <csmall@enc.com.au>
Thu, 22 May 2014 11:56:42 +0000 (21:56 +1000)
committerCraig Small <csmall@enc.com.au>
Thu, 22 May 2014 11:56:42 +0000 (21:56 +1000)
src/killall.c
src/prtstat.c

index b1a6d1891e27a29934ba5b6e4ca80b696642d1f1..1b8e87870ab47479e2eddf3853cdd9b646a88968 100644 (file)
@@ -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++)
index 0a6ace47be14237abd015f10646d5189c4207387..fee5f61febf3d167f882d0617b46eabc20d3c1b4 100644 (file)
@@ -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"));