Harden option validation
Project: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/commit/bc6b920f Tree: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/tree/bc6b920f Diff: http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/diff/bc6b920f Branch: refs/heads/master Commit: bc6b920f92e06208248adcd173f99311ebed7824 Parents: a60bab7 Author: Nick Wellnhofer <[email protected]> Authored: Sun Feb 1 22:59:17 2015 +0100 Committer: Nick Wellnhofer <[email protected]> Committed: Sun Feb 1 22:59:17 2015 +0100 ---------------------------------------------------------------------- src/Charmonizer/Core/CLI.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-charmonizer/blob/bc6b920f/src/Charmonizer/Core/CLI.c ---------------------------------------------------------------------- diff --git a/src/Charmonizer/Core/CLI.c b/src/Charmonizer/Core/CLI.c index 78678af..4ce20c3 100644 --- a/src/Charmonizer/Core/CLI.c +++ b/src/Charmonizer/Core/CLI.c @@ -240,7 +240,17 @@ chaz_CLI_set(chaz_CLI *self, const char *name, const char *value) { return 0; } opt->defined = 1; - if (value != NULL) { + if (opt->flags == CHAZ_CLI_NO_ARG) { + if (value != NULL) { + S_chaz_CLI_error(self, "'%s' expects no value", name); + return 0; + } + } + else { + if (value == NULL) { + S_chaz_CLI_error(self, "'%s' expects a value", name); + return 0; + } opt->value = chaz_Util_strdup(value); } return 1;
