From ba52e34dcec20c19774e279386b8f991dc1dd616 Mon Sep 17 00:00:00 2001 From: Peter Hutterer Date: Wed, 22 Jul 2020 11:15:27 +1000 Subject: tools: don't assert on 64+ commandline arguments, just return Signed-off-by: Peter Hutterer --- tools/test-tool-option-parsing.py | 4 ++++ tools/tools-common.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/test-tool-option-parsing.py b/tools/test-tool-option-parsing.py index ad3a599..27af46e 100755 --- a/tools/test-tool-option-parsing.py +++ b/tools/test-tool-option-parsing.py @@ -171,6 +171,10 @@ def test_xkbcli_version(xkbcli): assert stderr == '' +def test_xkbcli_too_many_args(xkbcli): + xkbcli.run_command_invalid(['a'] * 64) + + @pytest.mark.parametrize('args', [['--verbose'], ['--rmlvo'], ['--kccgst'], diff --git a/tools/tools-common.c b/tools/tools-common.c index 0b42892..f7539fe 100644 --- a/tools/tools-common.c +++ b/tools/tools-common.c @@ -229,7 +229,10 @@ tools_exec_command(const char *prefix, int real_argc, char **real_argv) char executable[128]; const char *command; - assert((size_t)real_argc < ARRAY_SIZE(argv)); + if (((size_t)real_argc >= ARRAY_SIZE(argv))) { + fprintf(stderr, "Too many arguments\n"); + return EXIT_INVALID_USAGE; + } command = real_argv[0]; -- cgit v1.2.1