Add a check that the default 0 assignment will not mean that an option
is considered to be VSH_OT_BOOL.

Signed-off-by: Peter Krempa <[email protected]>
---
 tools/vsh.c | 7 +++++++
 tools/vsh.h | 1 +
 2 files changed, 8 insertions(+)

diff --git a/tools/vsh.c b/tools/vsh.c
index 61e302f9c8..a3491695b9 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -335,6 +335,11 @@ vshCmddefCheckInternals(vshControl *ctl,
             virBufferStrcat(&complbuf, opt->name, ", ", NULL);

         switch (opt->type) {
+        case VSH_OT_NONE:
+            vshError(ctl, "invalid type 'NONE' of option '%s' of command '%s'",
+                     opt->name, cmd->name);
+            return -1;
+
         case VSH_OT_BOOL:
             if (opt->completer || opt->completer_flags) {
                 vshError(ctl, "bool parameter '%s' of command '%s' has 
completer set",
@@ -671,6 +676,7 @@ vshCmddefHelp(const vshCmdDef *def)
                 }
                 break;
             case VSH_OT_ALIAS:
+            case VSH_OT_NONE:
                 /* aliases are intentionally undocumented */
                 continue;
             }
@@ -713,6 +719,7 @@ vshCmddefHelp(const vshCmdDef *def)
                            opt->name);
                 break;
             case VSH_OT_ALIAS:
+            case VSH_OT_NONE:
                 continue;
             }

diff --git a/tools/vsh.h b/tools/vsh.h
index 17d7f08dc9..2cc0a62d3f 100644
--- a/tools/vsh.h
+++ b/tools/vsh.h
@@ -85,6 +85,7 @@ typedef enum {
  * vshCmdOptType - command option type
  */
 typedef enum {
+    VSH_OT_NONE = 0, /* cannary to catch programming errors */
     VSH_OT_BOOL,     /* optional boolean option */
     VSH_OT_STRING,   /* optional string option */
     VSH_OT_INT,      /* optional or mandatory int option */
-- 
2.44.0
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to