From cfc6046689f828cff4f914fdddb1350f7b576f42 Mon Sep 17 00:00:00 2001 From: Matthew Leeds Date: Thu, 28 Feb 2019 16:19:41 -0800 Subject: [PATCH] ostree/config: Check for too many args Currently it's not an error to provide too many arguments to an ostree config command. Change it so we print usage information in that case, and update the unit tests. Closes: #1743 Approved by: cgwalters --- src/ostree/ot-builtin-config.c | 12 ++++++++++++ tests/test-config.sh | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/ostree/ot-builtin-config.c b/src/ostree/ot-builtin-config.c index 8e00af08..811a8381 100644 --- a/src/ostree/ot-builtin-config.c +++ b/src/ostree/ot-builtin-config.c @@ -71,6 +71,7 @@ ostree_builtin_config (int argc, char **argv, OstreeCommandInvocation *invocatio g_autofree char *section = NULL; g_autofree char *key = NULL; g_autoptr(GKeyFile) config = NULL; + int correct_argc; context = g_option_context_new ("(get KEY|set KEY VALUE|unset KEY)"); @@ -85,6 +86,17 @@ ostree_builtin_config (int argc, char **argv, OstreeCommandInvocation *invocatio op = argv[1]; + if (!strcmp (op, "set")) + correct_argc = 4; + else + correct_argc = 3; + + if (argc > correct_argc) + { + ot_util_usage_error (context, "Too many arguments given", error); + return FALSE; + } + if (!strcmp (op, "set")) { if (opt_group) diff --git a/tests/test-config.sh b/tests/test-config.sh index 62f63006..b98f8d47 100755 --- a/tests/test-config.sh +++ b/tests/test-config.sh @@ -41,6 +41,12 @@ assert_file_has_content list.txt "1" assert_file_has_content list.txt "Flathub" assert_file_has_content list.txt "true" assert_file_has_content list.txt "http://example.com/ostree/repo/" + +# Check that it errors out if too many arguments are given +if ${CMD_PREFIX} ostree config --repo=repo get --group=core lock-timeout-secs extra 2>err.txt; then + assert_not_reached "ostree config get should error out if too many arguments are given" +fi +assert_file_has_content err.txt "error: Too many arguments given" echo "ok config get" ${CMD_PREFIX} ostree config --repo=repo set core.mode bare-user-only @@ -52,6 +58,12 @@ assert_file_has_content repo/config "bare-user-only" assert_file_has_content repo/config "Nightly Flathub" assert_file_has_content repo/config "false" assert_file_has_content repo/config "http://example.com/ostree/" + +# Check that it errors out if too many arguments are given +if ${CMD_PREFIX} ostree config --repo=repo set --group=core lock-timeout-secs 120 extra 2>err.txt; then + assert_not_reached "ostree config set should error out if too many arguments are given" +fi +assert_file_has_content err.txt "error: Too many arguments given" echo "ok config set" # Check that "ostree config unset" works @@ -76,4 +88,10 @@ ${CMD_PREFIX} ostree config --repo=repo unset --group='remote "aoeuhtns"' 'xa.ti # Check that the key doesn't need to exist ${CMD_PREFIX} ostree config --repo=repo set --group='remote "aoeuhtns"' 'xa.title-is-set' 'false' ${CMD_PREFIX} ostree config --repo=repo unset --group='remote "aoeuhtns"' 'xa.title' + +# Check that it errors out if too many arguments are given +if ${CMD_PREFIX} ostree config --repo=repo unset core.lock-timeout-secs extra 2>err.txt; then + assert_not_reached "ostree config unset should error out if too many arguments are given" +fi +assert_file_has_content err.txt "error: Too many arguments given" echo "ok config unset"