diff options
author | Eric Leblond <eric@regit.org> | 2012-07-18 20:56:04 +0000 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2012-07-20 10:08:31 +0200 |
commit | 8ec1ed82572d7e509ce14c476df81241293a770c (patch) | |
tree | 91c0129efa492c71b7634323f821caa11d193be9 /input | |
parent | 38444668368fa499c6f788ae259338d2a4c02324 (diff) |
NFCT: fix crash in polling mode if used by two stacks
The polling timer initialisation code was put in the configurator
code. It was then created for all instances. But only first one has
a valid NFCT handle. This was resulting in a crash.
This patch moves the timer initialisation in the constructor which
is called only once on the main NFCT instance.
Signed-off-by: Eric Leblond <eric@regit.org>
Reported-by: Gomathivinayagam Muthuvinayagam <sankarmail@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'input')
-rw-r--r-- | input/flow/ulogd_inpflow_NFCT.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/input/flow/ulogd_inpflow_NFCT.c b/input/flow/ulogd_inpflow_NFCT.c index b45a435..dcba58f 100644 --- a/input/flow/ulogd_inpflow_NFCT.c +++ b/input/flow/ulogd_inpflow_NFCT.c @@ -982,11 +982,6 @@ static int configure_nfct(struct ulogd_pluginstance *upi, if (ret < 0) return ret; - ulogd_init_timer(&cpi->timer, upi, polling_timer_cb); - if (pollint_ce(upi->config_kset).u.value != 0) - ulogd_add_timer(&cpi->timer, - pollint_ce(upi->config_kset).u.value); - return 0; } @@ -1152,6 +1147,11 @@ static int constructor_nfct_polling(struct ulogd_pluginstance *upi) if (cpi->ct == NULL) goto err_ct_cache; + ulogd_init_timer(&cpi->timer, upi, polling_timer_cb); + if (pollint_ce(upi->config_kset).u.value != 0) + ulogd_add_timer(&cpi->timer, + pollint_ce(upi->config_kset).u.value); + ulogd_log(ULOGD_NOTICE, "NFCT working in polling mode\n"); return 0; |