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;

Reply via email to