提交 7993554f 编写于 作者: D Daniel P. Berrange

nwfilter: don't crash listing filters in unprivileged daemon

The unprivileged libvirtd does not support nwfilter config, by leaves the
driver active. It is supposed to result in all APIs being an effective
no-op, but several APIs rely on driver->nwfilters being non-NULL, or they
will reference a NULL pointer. Rather than adding checks for NULL in many
places, just make sure  driver->nwfilters is always initialized.
Reviewed-by: NJohn Ferlan <jferlan@redhat.com>
Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
上级 ab7a2fe2
...@@ -189,6 +189,8 @@ nwfilterStateInitialize(bool privileged, ...@@ -189,6 +189,8 @@ nwfilterStateInitialize(bool privileged,
/* remember that we are going to use firewalld */ /* remember that we are going to use firewalld */
driver->watchingFirewallD = (sysbus != NULL); driver->watchingFirewallD = (sysbus != NULL);
driver->privileged = privileged; driver->privileged = privileged;
if (!(driver->nwfilters = virNWFilterObjListNew()))
goto error;
if (!privileged) if (!privileged)
return 0; return 0;
...@@ -244,9 +246,6 @@ nwfilterStateInitialize(bool privileged, ...@@ -244,9 +246,6 @@ nwfilterStateInitialize(bool privileged,
goto error; goto error;
} }
if (!(driver->nwfilters = virNWFilterObjListNew()))
goto error;
if (virNWFilterObjListLoadAllConfigs(driver->nwfilters, driver->configDir) < 0) if (virNWFilterObjListLoadAllConfigs(driver->nwfilters, driver->configDir) < 0)
goto error; goto error;
...@@ -271,6 +270,7 @@ nwfilterStateInitialize(bool privileged, ...@@ -271,6 +270,7 @@ nwfilterStateInitialize(bool privileged,
virNWFilterIPAddrMapShutdown(); virNWFilterIPAddrMapShutdown();
err_free_driverstate: err_free_driverstate:
virNWFilterObjListFree(driver->nwfilters);
VIR_FREE(driver); VIR_FREE(driver);
return -1; return -1;
...@@ -349,13 +349,13 @@ nwfilterStateCleanup(void) ...@@ -349,13 +349,13 @@ nwfilterStateCleanup(void)
nwfilterDriverRemoveDBusMatches(); nwfilterDriverRemoveDBusMatches();
/* free inactive nwfilters */
virNWFilterObjListFree(driver->nwfilters);
VIR_FREE(driver->configDir); VIR_FREE(driver->configDir);
nwfilterDriverUnlock(); nwfilterDriverUnlock();
} }
/* free inactive nwfilters */
virNWFilterObjListFree(driver->nwfilters);
virMutexDestroy(&driver->lock); virMutexDestroy(&driver->lock);
VIR_FREE(driver); VIR_FREE(driver);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册