diff options
author | Corubba Smith <corubba@gmx.de> | 2025-03-25 01:24:04 +0100 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2025-03-25 11:16:38 +0100 |
commit | 64d7d2be000e2146a2b141f3881872d1a1eae4d6 (patch) | |
tree | 7b073f12e6416abf5591ef45d0fa72dee0cd08f4 | |
parent | 1b4e27768b375e646528a1b622391a95f8c25b25 (diff) |
nfct: fix counter-reset without hashtable
In event mode the hashtable is optional, and sending SIGUSR2 to ulogd will
call get_ctr_zero().
The dump_reset_handler will try to update the hashtable regardless of
whether it is used (and thus initialized), which results in a segfault
if it isn't. Instead just short-circuit the handler, and skip any
further result processing because it's not used in this case anyway.
All flow counters in conntrack are reset regardless of the return value
of the handler/callback.
Signed-off-by: Corubba Smith <corubba@gmx.de>
Signed-off-by: Florian Westphal <fw@strlen.de>
-rw-r--r-- | input/flow/ulogd_inpflow_NFCT.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/input/flow/ulogd_inpflow_NFCT.c b/input/flow/ulogd_inpflow_NFCT.c index 93edb76..cdda741 100644 --- a/input/flow/ulogd_inpflow_NFCT.c +++ b/input/flow/ulogd_inpflow_NFCT.c @@ -989,6 +989,9 @@ dump_reset_handler(enum nf_conntrack_msg_type type, int ret = NFCT_CB_CONTINUE, rc, id; struct ct_timestamp *ts; + if (!cpi->ct_active) + return NFCT_CB_STOP; + switch(type) { case NFCT_T_UPDATE: id = hashtable_hash(cpi->ct_active, ct); |