summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCorubba Smith <corubba@gmx.de>2025-03-25 01:24:04 +0100
committerFlorian Westphal <fw@strlen.de>2025-03-25 11:16:38 +0100
commit64d7d2be000e2146a2b141f3881872d1a1eae4d6 (patch)
tree7b073f12e6416abf5591ef45d0fa72dee0cd08f4
parent1b4e27768b375e646528a1b622391a95f8c25b25 (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.c3
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);