]> granicus.if.org Git - procps-ng/commitdiff
kill: Fix free() with bad pointer on SIG-prefixed signal-name
authorOlof Sivertsson <osivertsson@gmail.com>
Thu, 8 Sep 2016 06:32:43 +0000 (08:32 +0200)
committerOlof Sivertsson <osivertsson@gmail.com>
Thu, 8 Sep 2016 20:32:18 +0000 (22:32 +0200)
kill -l SIGHUP (or any other signal-name prefixed with "SIG")
would cause free() to be called with a bad pointer instead of
a pointer to what was allocated. Fix this and add test-case.

proc/sig.c
testsuite/kill.test/kill.exp

index 2191cda53c40e28e6f6ca3ff8c345fcbd3b3b588..a93aabb912342b2f4d2167f2379f9956a9409b9c 100644 (file)
@@ -261,7 +261,7 @@ char *strtosig(const char *restrict s){
       }
     }
   }
-  free(p);
+  free(copy);
   return converted;
 }
 
index 1668ac4f3676f8b8e2f91c7803adeeb9c2df5776..211395c95077d971ad31ee60d2806908c0febd39 100644 (file)
@@ -24,6 +24,10 @@ set test "kill convert signal name to number"
 spawn  $kill -lHUP
 expect_pass "$test" "^1\\s*"
 
+set test "kill convert SIG-prefixed signal name to number"
+spawn  $kill -lSIGHUP
+expect_pass "$test" "^1\\s*$"
+
 set test "kill convert signal number to name"
 spawn  $kill -l 1
 expect_pass "$test" "^HUP\\s*"