]> xenbits.xensource.com Git - libvirt.git/commitdiff
virsh: don't override connection URI from argv
authorRoman Bogorodskiy <bogorodskiy@gmail.com>
Thu, 21 Apr 2016 06:32:00 +0000 (09:32 +0300)
committerRoman Bogorodskiy <bogorodskiy@gmail.com>
Thu, 21 Apr 2016 06:37:48 +0000 (09:37 +0300)
Currently, if a connection URI was specified on the command line by the
'-c' switch, virsh connects to it, but after connecting overrides its
value with the one it tries to obtain from the VIRSH_DEFAULT_CONNECT_URI
environment variable.

This makes virsh connecting to the wrong URI if it disconnects from the
hypervisor and then tries to reconnect, and also leaks the original connname.

Fix by calling virGetEnvBlockSUID() before virshParseArgv().

tools/virsh.c

index 0d8ec5c80c7d6938005b56ee9bd8e043d60fc2cb..e14410bd5cfd8b71beba60f402974d684368316c 100644 (file)
@@ -962,14 +962,14 @@ main(int argc, char **argv)
     if (!vshInit(ctl, cmdGroups, NULL))
         exit(EXIT_FAILURE);
 
+    ctl->connname = vshStrdup(ctl, virGetEnvBlockSUID("VIRSH_DEFAULT_CONNECT_URI"));
+
     if (!virshParseArgv(ctl, argc, argv) ||
         !virshInit(ctl)) {
         virshDeinit(ctl);
         exit(EXIT_FAILURE);
     }
 
-    ctl->connname = vshStrdup(ctl, virGetEnvBlockSUID("VIRSH_DEFAULT_CONNECT_URI"));
-
     if (!ctl->imode) {
         ret = vshCommandRun(ctl, ctl->cmd);
     } else {