From af055dabfc90daaaf93e9417bf4a3c5b2e63a057 Mon Sep 17 00:00:00 2001 From: Rob Landley Date: Wed, 14 Jun 2023 16:28:55 -0500 Subject: [PATCH] Fix killall5 /proc parsing for complex command names. --- toys/posix/kill.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/toys/posix/kill.c b/toys/posix/kill.c index 2f47f60f..f869e368 100644 --- a/toys/posix/kill.c +++ b/toys/posix/kill.c @@ -10,6 +10,8 @@ * Copyright 2014 Kyungwan Han * * No Standard + * + * TODO: toysh jobspec support, -n -L USE_KILL(NEWTOY(kill, "?ls: ", TOYFLAG_BIN|TOYFLAG_MAYFORK)) USE_KILLALL5(NEWTOY(killall5, "?o*ls: [!lo][!ls]", TOYFLAG_SBIN)) @@ -118,7 +120,9 @@ void kill_main(void) snprintf(toybuf, sizeof(toybuf), "/proc/%d/stat", procpid); if (!readfile(toybuf, toybuf, sizeof(toybuf))) continue; - if (sscanf(toybuf, "%*d %*s %*c %*d %*d %d", &procsid) != 1) continue; + // command name can have embedded space and/or ) + if (!(tmp = strrchr(toybuf, ')')) + || sscanf(tmp, " %*c %*d %*d %d", &procsid) != 1) continue; if (pid == procpid || sid == procsid || procpid == 1) continue; // Check for kernel threads. -- 2.39.2