In v6.10.0-rc1~104 I've added a virsh command that exposes virDomainAuthorizedSSHKeysSet() API under "set-user-sshkeys" command. The command accepts mutually exclusive "--reset" and "--remove" options (among others). While the former controls the VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEND flag, the latter controls the VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOVE flag. These flags are also mutually exclusive. But the code that sets them has a logical error which may result in both flags being set. In fact, this results in user being not able to set just the remove flag. Fixes: 87d12effbea8b414c250b6fefd93154c62a99370 Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1904674 Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> --- tools/virsh-domain.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index 1fb4189b4b..6266c7acd2 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -14375,17 +14375,18 @@ cmdSetUserSSHKeys(vshControl *ctl, const vshCmd *cmd) if (vshCommandOptStringReq(ctl, cmd, "file", &from) < 0) goto cleanup; - if (!vshCommandOptBool(cmd, "reset")) { - flags |= VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEND; - - if (!from) { - vshError(ctl, _("Option --file is required")); - goto cleanup; - } - } - - if (vshCommandOptBool(cmd, "remove")) + if (vshCommandOptBool(cmd, "remove")) { flags |= VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOVE; + } else { + if (!vshCommandOptBool(cmd, "reset")) { + flags |= VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_APPEND; + + if (!from) { + vshError(ctl, _("Option --file is required")); + goto cleanup; + } + } + } if (from) { if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) { -- 2.26.2