From 0217089b89af757192302cb78fd0f248b3256baf Mon Sep 17 00:00:00 2001 From: Roman Bogorodskiy Date: Thu, 21 Apr 2016 09:32:00 +0300 Subject: [PATCH] virsh: don't override connection URI from argv 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 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/virsh.c b/tools/virsh.c index 0d8ec5c80c..e14410bd5c 100644 --- a/tools/virsh.c +++ b/tools/virsh.c @@ -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 {