commit: 9a9eb5d03f4f5e6b07ddcd52be19c954de5e25e0
parent 0e70da2b3e6a1f8a0ceacd5e53a88de54a9f1da4
Author: Haelwenn (lanodan) Monnier <contact@hacktivis.me>
Date: Sat, 21 Feb 2026 21:27:03 +0100
cmd/getconf: properly handle unknown opt
Diffstat:
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/cmd/getconf.c b/cmd/getconf.c
@@ -145,8 +145,7 @@ main(int argc, char *argv[])
{
bool o_all = false;
- int c = -1;
- while((c = getopt_nolong(argc, argv, ":av:")) != -1)
+ for(int c = -1; (c = getopt_nolong(argc, argv, ":av:")) != -1;)
{
switch(c)
{
@@ -156,6 +155,12 @@ main(int argc, char *argv[])
case 'v':
fputs("getconf: -v option is unsupported\n", stderr);
return 1;
+ case ':':
+ fprintf(stderr, "getconf: error: Missing operand for option: '-%c'\n", optopt);
+ return 1;
+ case '?':
+ GETOPT_UNKNOWN_OPT
+ return 1;
}
}
diff --git a/test-cmd/getconf.sh b/test-cmd/getconf.sh
@@ -2,9 +2,10 @@
# SPDX-FileCopyrightText: 2017 Haelwenn (lanodan) Monnier <contact+utils@hacktivis.me>
# SPDX-License-Identifier: MPL-2.0
+plans=4
+
WD="$(dirname "$0")"
target="${WD}/../cmd/getconf"
-plans=3
. "${WD}/tap.sh"
getconf_dupes() { "$target" -a 2>/dev/null | cut -d: -f1 | sort | uniq -d; }
@@ -21,3 +22,6 @@ t_args --exit=1 wrong_sys_var:NAME_MAX 'getconf: error: unknown system_var "NAME
t_args --exit=1 wrong_path_var:LOGIN_NAME_MAX 'getconf: error: unknown path_var "LOGIN_NAME_MAX"
' LOGIN_NAME_MAX .
+
+t_args --exit=1 unknown_opt "getconf: error: Long options unsupported: '--foo'
+" --foo