vsh: Ensure that bool --options don't have completer

Let's check whether a boolean --option doesn't have completer or
completer_flags set. These options are just flags and don't
accept any value, thus they can't have any completer.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Michal Privoznik 2021-09-17 09:58:03 +02:00
parent a1a22b0b1c
commit b480a5cb5c

View File

@ -337,8 +337,16 @@ vshCmddefCheckInternals(vshControl *ctl,
virBufferStrcat(&complbuf, opt->name, ", ", NULL);
switch (opt->type) {
case VSH_OT_STRING:
case VSH_OT_BOOL:
if (opt->completer || opt->completer_flags) {
vshError(ctl, _("bool parameter '%s' of command '%s' has completer set"),
opt->name, cmd->name);
return -1;
}
G_GNUC_FALLTHROUGH;
case VSH_OT_STRING:
if (opt->flags & VSH_OFLAG_REQ) {
vshError(ctl, _("parameter '%s' of command '%s' misused VSH_OFLAG_REQ"),
opt->name, cmd->name);