netfilter: ipset: hash:net,iface timeout bug fixed
Timed out entries were still matched till the garbage collector purged them out. The fix is verified in the testsuite. Signed-off-by: Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
This commit is contained in:
committed by
Pablo Neira Ayuso
parent
2a7cef2a4b
commit
7f81c951d9
@ -1005,9 +1005,17 @@ type_pf_ttest_cidrs(struct ip_set *set, struct type_pf_elem *d, u32 timeout)
|
|||||||
n = hbucket(t, key);
|
n = hbucket(t, key);
|
||||||
for (i = 0; i < n->pos; i++) {
|
for (i = 0; i < n->pos; i++) {
|
||||||
data = ahash_tdata(n, i);
|
data = ahash_tdata(n, i);
|
||||||
|
#ifdef IP_SET_HASH_WITH_MULTI
|
||||||
|
if (type_pf_data_equal(data, d, &multi)) {
|
||||||
|
if (!type_pf_data_expired(data))
|
||||||
|
return type_pf_data_match(data);
|
||||||
|
multi = 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (type_pf_data_equal(data, d, &multi) &&
|
if (type_pf_data_equal(data, d, &multi) &&
|
||||||
!type_pf_data_expired(data))
|
!type_pf_data_expired(data))
|
||||||
return type_pf_data_match(data);
|
return type_pf_data_match(data);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
Reference in New Issue
Block a user