mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-22 13:45:38 +00:00
virsh: Fix logical error in cmdSetUserSSHKeys()
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: 87d12effbe
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1904674
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
parent
cafbc6d1d2
commit
22e785b8ef
@ -14375,18 +14375,19 @@ 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 (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) {
|
||||
vshError(ctl, _("Option --file is required"));
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (vshCommandOptBool(cmd, "remove"))
|
||||
flags |= VIR_DOMAIN_AUTHORIZED_SSH_KEYS_SET_REMOVE;
|
||||
|
||||
if (from) {
|
||||
if (virFileReadAll(from, VSH_MAX_XML_FILE, &buffer) < 0) {
|
||||
vshSaveLibvirtError();
|
||||
|
Loading…
Reference in New Issue
Block a user