]> git.ipfire.org Git - thirdparty/ulogd2.git/commitdiff
NFCT: fix crash in polling mode if used by two stacks
authorEric Leblond <eric@regit.org>
Wed, 18 Jul 2012 20:56:04 +0000 (20:56 +0000)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 20 Jul 2012 08:08:31 +0000 (10:08 +0200)
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>
input/flow/ulogd_inpflow_NFCT.c

index b45a4354a8d9e030cdc601c1fd3be7182154bc79..dcba58f4be6ffb56bd9655c5cfbd1a9ccbce95b8 100644 (file)
@@ -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;