Commit
30ce2f0e tried to fix the issue with an incorrect session URI to admin
server but it messed up the checks:
if (geteuid == 0 && VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
return -1;
else if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
return -1;
So if a client executed with root privileges tries to connect, its euid is
checked (true) and the correct URI is successfully copied to @uristr (false),
therefore the 'else' branch is taken and @uristr is replaced by the session URI
which for root results in:
Failed to connect socket to '/root/.cache/libvirt/libvirt-admin-sock':
No such file or directory
Signed-off-by: Erik Skultety <eskultet@redhat.com>
* we set the default admin server URI to 'libvirtd:///system' or
* 'libvirtd:///session' depending on the process's EUID.
*/
- if (geteuid() == 0 &&
- VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
+ if (geteuid() == 0) {
+ if (VIR_STRDUP(*uristr, "libvirtd:///system") < 0)
return -1;
- else if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
+ } else {
+ if (VIR_STRDUP(*uristr, "libvirtd:///session") < 0)
return -1;
+ }
}
}