From: Laine Stump Date: Fri, 18 Mar 2011 17:05:08 +0000 (-0400) Subject: network driver: log error and abort network startup when radvd isn't found X-Git-Tag: CVE-2011-1486~36 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b538cdd5a92e3a798ccba105dc410462911dde86;p=thirdparty%2Flibvirt.git network driver: log error and abort network startup when radvd isn't found This is detailed in: https://bugzilla.redhat.com/show_bug.cgi?id=688957 Since radvd is executed by daemonizing it, the attempt to exec the radvd binary doesn't happen until after libvirtd has already received an exit code from the intermediate forked process, so no error is detected or logged by __virExec(). We can't require radvd as a prerequisite for the libvirt package (many installations don't use IPv6, so they don't need it), so instead we add in a check to verify there is an executable radvd binary prior to trying to exec it. --- diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c index 6a02df11ae..c30620a63b 100644 --- a/src/network/bridge_driver.c +++ b/src/network/bridge_driver.c @@ -689,6 +689,14 @@ networkStartRadvd(virNetworkObjPtr network) network->radvdPid = -1; + if (access(RADVD, X_OK) < 0) { + virReportSystemError(errno, + _("Cannot find %s - " + "Possibly the package isn't installed"), + RADVD); + goto cleanup; + } + if ((err = virFileMakePath(NETWORK_PID_DIR)) != 0) { virReportSystemError(err, _("cannot create directory %s"),