]> 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)
committerCraig Small <csmall@enc.com.au>
Sat, 10 Sep 2016 23:58:55 +0000 (09:58 +1000)
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.

lib/signals.c
testsuite/kill.test/kill.exp

index f10ed1e5116aa999dbe9bc996550b56101dc249f..a9d0ebb4cae9fddb535371413775b8a931810de4 100644 (file)
@@ -263,7 +263,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*"