diff options
author | Daniel P. Berrange <berrange@redhat.com> | 2010-04-19 14:16:46 +0100 |
---|---|---|
committer | Daniel P. Berrange <berrange@redhat.com> | 2010-04-23 11:06:30 +0100 |
commit | 98bd5e6c5a2634bcb99992dd10dd41a352ac210c (patch) | |
tree | 29d501c0c94690d217928da9432b4391b477d997 | |
parent | addrToString: give better error message (diff) | |
download | libvirt-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.c | 11 |
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; } /** |