--- id: "bug-1708" status: "fixed" status_updated: "2026-09-28" status_note: "" component: "controller" severity: "unknown" timestamp: "2026-08-26T09:32:18Z" last_seen: "2026-09-19T09:00:00Z" occurrences: 1 files: ["src/harness/test.c"] tags: ["controller", "testsuite", "xce_test", "cmd_jobkill", "silent-failure", "cli-ux-audit"] related: [] fix_commits: ["da1a663f"] legacy: true gitea_issue: 303 gitea_synced_status: "fixed" gitea_synced_hash: "3b44e52455e4" --- # bug-1708: cmd_jobkill's `-s ` is parsed via unchecked atoi(); a non-numeric value (e.g ## Description cmd_jobkill's `-s ` is parsed via unchecked atoi(); a non-numeric value (e.g. a plausible typo of the symbolic name `SIGKILL` instead of `9`) silently becomes signo=0 (POSIX null signal, delivers nothing), yet the command still prints "Job signaled" as if it succeeded. ## Environment _Not recorded (migrated from buglog.json)._ ## Reproduction _Not recorded (migrated from buglog.json)._ ## Root cause No validation that -s's argument is numeric/nonzero before using it and reporting success. ## Fix jobkill's -s is parsed with cmdutil_parse_long() and must be a signal number 1..NSIG-1; anything else is a usage error before any RPC. ## Verification - Test: test_jobkill_non_numeric_signal_rejected in src/harness/testsuite/test_test_cli.c: RED before the fix (-s SIGKILL accepted and sent), GREEN after; plus the parse_long cases in src/harness/testsuite/test_cmdutil.c - Suites: harness 6/6 (asan): harness_unit_test 141/0, cmdutil 14/0, resval_typeresolve 7/0, joblist_display 22/0, join_worker_args 7/0, listrow_json 12/0 - Live: n/a; xce_test is a client tool and every case above runs without a controller ## References _Not recorded (migrated from buglog.json)._