[PATCH 1/2] virsh: Fix logical error in cmdSetUserSSHKeys()

Michal Privoznik mprivozn at redhat.com
Tue Dec 8 13:10:25 UTC 2020


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 at redhat.com>
---
 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




More information about the libvir-list mailing list