Re: expires larger than timeout causes error
Harshit Mogalapalli <[email protected]>
| Newsgroups | gmane.comp.security.firewalls.netfilter.general |
|---|---|
| Message-ID | <[email protected]> |
Hi,
On 29/12/24 15:30, lilydjwg wrote:
> I have an IPv4 set with timeout 2d, but update its elements to 4d when
> a rule matches. It was fine until kernel is updated to 6.12.6 or 6.12.7.
> E.g. the following snippet gives an error when importing:
>
> table inet blocker {
> set spam_ips {
> type ipv4_addr
> size 65535
> flags dynamic,timeout
> timeout 2d
> elements = { 1.2.3.4 expires 3d }
> }
> }
>
> a.nft:7:16-22: Error: Could not process rule: Numerical result out of range
> elements = { 1.2.3.4 expires 3d }
> ^^^^^^^
>
Note: I looked through the commits and this looks like a relevant commit:
commit c0f38a8c60174368aed1d0f9965d733195f15033
Author: Pablo Neira Ayuso <[email protected]>
Date: Tue Sep 3 01:06:58 2024 +0200
netfilter: nf_tables: reject expiration higher than timeout
Report ERANGE to userspace if user specifies an expiration larger than
the timeout.
Fixes: 8e1102d5a159 ("netfilter: nf_tables: support timeouts larger
than 23 days")
Signed-off-by: Pablo Neira Ayuso <[email protected]>
diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
index da75bc1de466..6c0c6f8a08a8 100644
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
@@ -6930,6 +6930,9 @@ static int nft_add_set_elem(struct nft_ctx *ctx,
struct nft_set *set,
&expiration);
if (err)
return err;
+
+ if (expiration > timeout)
+ return -ERANGE;
}
if (nla[NFTA_SET_ELEM_EXPR]) {
Thanks,
Harshit
> kernel 6.10.6 worked just fine. nftables cli v1.1.1.
>
> Despite I can't import the set, existing elements can still be updated
> to timeout more that 2d.
>
> A new bug? Or a new limitation?
>