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()
---
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 58df4e1..412c5b8 100644
--- a/src/nwfilter/nwfilter_driver.c
+++ b/src/nwfilter/nwfilter_driver.c
@@ -153,9 +153,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;
}
/**
--
1.6.6.1