If a command is an alias, then it can only have .name, .flags and .alias set and .flags should contain just VSH_CMD_FLAG_ALIAS. Check if that's the case in self-test.
Signed-off-by: Michal Privoznik <mpriv...@redhat.com> --- tools/vsh.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/tools/vsh.c b/tools/vsh.c index cf24586b25..3d5fef84f0 100644 --- a/tools/vsh.c +++ b/tools/vsh.c @@ -290,6 +290,26 @@ vshCmddefCheckInternals(vshControl *ctl, return -1; } + if (cmd->handler) { + vshError(ctl, _("command '%s' has handler set"), cmd->name); + return -1; + } + + if (cmd->opts) { + vshError(ctl, _("command '%s' has options set"), cmd->name); + return -1; + } + + if (cmd->info) { + vshError(ctl, _("command '%s' has info set"), cmd->name); + return -1; + } + + if (cmd->flags & ~VSH_CMD_FLAG_ALIAS) { + vshError(ctl, _("command '%s' has multiple flags set"), cmd->name); + return -1; + } + /* we don't need to continue as the real command will be checked separately */ return 0; } -- 2.32.0