From 251ee95294bd1554591c2a3b3d1d6428315dad52 Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Sun, 16 Aug 2026 18:36:34 +0000 Subject: tools: Fix irm CLI arg parsing Fixes "irm name list" matching "list" instead of "name" and improves guards against missing (last) arguments. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/tools/irm/irm_bind_process.c | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) (limited to 'src/tools/irm/irm_bind_process.c') diff --git a/src/tools/irm/irm_bind_process.c b/src/tools/irm/irm_bind_process.c index fee0c46b..c401df14 100644 --- a/src/tools/irm/irm_bind_process.c +++ b/src/tools/irm/irm_bind_process.c @@ -61,20 +61,24 @@ int do_bind_process(int argc, char * name = NULL; char * t; + if (argc < 1) { + usage(); + return -1; + } + + pid = strtol(*argv, &t, 10); + if (*argv == t || *t != '\0' || kill(pid, 0)) { + printf("\"%s\" is not a valid process id.\n", *argv); + return -1; + } + ++argv; + --argc; + while (argc > 1) { if (matches(*argv, "name") == 0) { name = *(argv + 1); ++argv; --argc; - } else if (matches(*argv, "process") == 0) { - pid = strtol(*(argv + 1), &t, 10); - if (*(argv + 1) == t || *t != '\0' || kill(pid, 0)) { - printf("\"%s\" is not a valid process id.\n", - *(argv + 1)); - return -1; - } - ++argv; - --argc; } else { printf("\"%s\" is unknown, try \"irm " "bind process\".\n", *argv); -- cgit v1.2.3