diff --git a/run.in b/run.in index 2211f24012..4371076ea9 100644 --- a/run.in +++ b/run.in @@ -56,7 +56,7 @@ export LD_LIBRARY_PATH export LIBVIRT_DRIVER_DIR="$b/src/.libs" export LIBVIRT_LOCK_MANAGER_PLUGIN_DIR="$b/src/.libs" export VIRTLOCKD_PATH="$b/src/virtlockd" -export LIBVIRTD_PATH="$b/daemon/libvirtd" +export LIBVIRTD_PATH="$b/daemon" # This is a cheap way to find some use-after-free and uninitialized # read problems when using glibc. diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c index ed7dde6a45..d9be7568a4 100644 --- a/src/remote/remote_driver.c +++ b/src/remote/remote_driver.c @@ -174,37 +174,6 @@ remoteStateInitialize(bool privileged ATTRIBUTE_UNUSED, } #endif -#ifndef WIN32 -/** - * remoteFindDaemonPath: - * - * Tries to find the path to the libvirtd binary. - * - * Returns path on success or NULL in case of error. - */ -static const char * -remoteFindDaemonPath(void) -{ - static const char *serverPaths[] = { - SBINDIR "/libvirtd", - SBINDIR "/libvirtd_dbg", - NULL - }; - size_t i; - const char *customDaemon = virGetEnvBlockSUID("LIBVIRTD_PATH"); - - if (customDaemon) - return customDaemon; - - for (i = 0; serverPaths[i]; i++) { - if (virFileIsExecutable(serverPaths[i])) { - return serverPaths[i]; - } - } - return NULL; -} -#endif - static void remoteDomainBuildEventLifecycle(virNetClientProgramPtr prog ATTRIBUTE_UNUSED, @@ -887,14 +856,13 @@ doRemoteOpen(virConnectPtr conn, } if ((flags & VIR_DRV_OPEN_REMOTE_AUTOSTART) && - !(daemonPath = remoteFindDaemonPath())) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("Unable to locate libvirtd daemon in %s " - "(to override, set $LIBVIRTD_PATH to the " - "name of the libvirtd binary)"), - SBINDIR); + !(daemonPath = virFileFindResourceFull("libvirtd", + NULL, NULL, + "daemon", + SBINDIR, + "LIBVIRTD_PATH"))) goto failed; - } + if (!(priv->client = virNetClientNewUNIX(sockname, flags & VIR_DRV_OPEN_REMOTE_AUTOSTART, daemonPath)))