summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2010-04-19 14:16:46 +0100
committerDaniel P. Berrange <berrange@redhat.com>2010-04-23 11:06:30 +0100
commit98bd5e6c5a2634bcb99992dd10dd41a352ac210c (patch)
tree29d501c0c94690d217928da9432b4391b477d997
parentaddrToString: give better error message (diff)
downloadlibvirt-98bd5e6c5a2634bcb99992dd10dd41a352ac210c.tar.gz
libvirt-98bd5e6c5a2634bcb99992dd10dd41a352ac210c.tar.bz2
libvirt-98bd5e6c5a2634bcb99992dd10dd41a352ac210c.zip
Fix crash in nwfilter driver check
The nwfilterDriverActive() could de-reference a NULL pointer if it hadn't be started at the point it was called. It was also not thread safe, since it lacked locking around data accesses. * src/nwfilter/nwfilter_driver.c: Fix locking & NULL checks in nwfilterDriverActive()
-rw-r--r--src/nwfilter/nwfilter_driver.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/nwfilter/nwfilter_driver.c b/src/nwfilter/nwfilter_driver.c
index d37ee605f..3ded2beb1 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -164,9 +164,16 @@ nwfilterDriverReload(void) {
*/
static int
nwfilterDriverActive(void) {
- if (!driverState->pools.count)
+ int ret;
+
+ if (!driverState)
return 0;
- return 1;
+
+ nwfilterDriverLock(driverState);
+ ret = driverState->pools.count ? 1 : 0;
+ nwfilterDriverUnlock(driverState);
+
+ return ret;
}
/**