Florian Westphal
1e105e6afa
netfilter: nf_tables: fix destination register zeroing
...
Following bug was reported via irc:
nft list ruleset
set knock_candidates_ipv4 {
type ipv4_addr . inet_service
size 65535
elements = { 127.0.0.1 . 123,
127.0.0.1 . 123 }
}
..
udp dport 123 add @knock_candidates_ipv4 { ip saddr . 123 }
udp dport 123 add @knock_candidates_ipv4 { ip saddr . udp dport }
It should not have been possible to add a duplicate set entry.
After some debugging it turned out that the problem is the immediate
value (123) in the second-to-last rule.
Concatenations use 32bit registers, i.e. the elements are 8 bytes each,
not 6 and it turns out the kernel inserted
inet firewall @knock_candidates_ipv4
element 0100007f ffff7b00 : 0 [end]
element 0100007f 00007b00 : 0 [end]
Note the non-zero upper bits of the first element. It turns out that
nft_immediate doesn't zero the destination register, but this is needed
when the length isn't a multiple of 4.
Furthermore, the zeroing in nft_payload is broken. We can't use
[len / 4] = 0 -- if len is a multiple of 4, index is off by one.
Skip zeroing in this case and use a conditional instead of (len -1) / 4.
Fixes: 49499c3e6e ("netfilter: nf_tables: switch registers to 32 bit addressing")
Signed-off-by: Florian Westphal <fw@strlen.de >
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org >
2020-08-21 19:00:33 +02:00
..
2020-07-22 01:18:05 +02:00
2020-08-03 16:03:18 -07:00
2020-04-15 21:36:41 +01:00
2020-07-29 20:09:18 +02:00
2020-04-09 00:12:48 +09:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:16:59 +02:00
2019-07-16 13:16:59 +02:00
2020-08-10 19:07:44 -07:00
2019-10-26 12:36:42 +02:00
2019-09-13 12:33:06 +02:00
2019-12-17 22:59:31 +01:00
2020-07-16 12:35:15 -07:00
2020-07-22 01:18:05 +02:00
2019-07-16 13:16:59 +02:00
2019-06-19 17:09:52 +02:00
2019-09-13 12:33:06 +02:00
2019-07-16 13:16:59 +02:00
2019-08-27 18:07:03 +02:00
2019-05-30 11:26:32 -07:00
2020-06-10 19:33:34 +02:00
2020-05-27 13:39:08 +02:00
2020-01-08 23:31:22 +01:00
2019-06-19 17:09:55 +02:00
2019-07-16 13:17:00 +02:00
2020-05-27 22:20:34 +02:00
2020-05-27 22:20:34 +02:00
2020-08-20 14:13:49 +02:00
2020-07-22 01:18:05 +02:00
2020-02-17 10:55:14 +01:00
2020-07-22 01:18:05 +02:00
2019-07-16 13:16:59 +02:00
2019-05-31 18:02:45 +02:00
2019-07-16 13:16:59 +02:00
2019-05-30 11:26:32 -07:00
2020-07-22 01:18:05 +02:00
2019-07-16 13:16:59 +02:00
2019-09-13 12:33:06 +02:00
2019-05-24 17:37:51 +02:00
2020-06-25 00:50:31 +02:00
2020-08-03 12:37:24 +02:00
2020-06-25 00:50:31 +02:00
2020-03-30 19:40:46 -07:00
2020-07-13 17:22:21 -07:00
2020-05-27 22:20:34 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-04-27 02:07:40 -04:00
2019-07-16 13:16:59 +02:00
2020-07-22 01:18:05 +02:00
2019-07-16 13:16:59 +02:00
2019-06-22 08:59:24 -04:00
2019-07-16 13:16:59 +02:00
2019-04-11 20:59:34 +02:00
2020-04-26 23:57:18 +02:00
2019-06-22 08:59:24 -04:00
2019-07-16 13:16:59 +02:00
2019-07-16 13:16:59 +02:00
2020-03-29 16:28:29 +02:00
2020-07-24 15:41:54 -07:00
2020-07-22 01:18:05 +02:00
2020-08-21 19:00:14 +02:00
2020-07-22 01:18:05 +02:00
2020-07-13 17:22:21 -07:00
2019-06-19 17:09:55 +02:00
2020-07-29 20:09:18 +02:00
2020-05-25 20:39:14 +02:00
2020-07-22 01:18:05 +02:00
2020-07-16 12:35:15 -07:00
2020-04-29 21:17:57 +02:00
2020-07-16 12:35:15 -07:00
2020-06-25 00:50:31 +02:00
2020-03-15 15:20:16 +01:00
2019-08-26 11:01:00 +02:00
2020-03-18 16:35:48 -07:00
2020-03-06 18:00:43 +01:00
2019-04-08 23:01:42 +02:00
2020-07-22 01:18:05 +02:00
2020-08-10 13:03:36 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-07-22 01:18:05 +02:00
2020-06-25 00:50:31 +02:00
2020-03-30 02:05:38 +02:00
2020-08-10 13:02:43 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-07-22 01:18:05 +02:00
2020-06-25 00:50:31 +02:00
2020-03-25 12:24:33 -07:00
2020-06-25 00:50:31 +02:00
2020-07-15 20:15:19 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-04-05 23:26:36 +02:00
2020-06-25 00:50:31 +02:00
2020-08-02 04:10:20 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-08-21 19:00:33 +02:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2019-12-09 13:14:03 +01:00
2020-06-25 00:50:31 +02:00
2020-06-25 00:50:31 +02:00
2020-06-30 18:21:02 +02:00
2019-06-19 17:09:55 +02:00
2020-04-05 23:26:36 +02:00
2020-03-15 15:20:16 +01:00
2020-03-15 15:27:46 +01:00
2020-04-09 00:12:48 +09:00
2020-07-29 20:09:18 +02:00
2020-03-15 15:27:46 +01:00
2020-08-21 17:37:36 +02:00
2019-09-02 23:20:59 +02:00
2020-06-25 00:50:31 +02:00
2019-12-26 13:11:40 -08:00
2020-06-25 00:50:31 +02:00
2019-06-19 17:09:55 +02:00
2020-07-22 01:18:05 +02:00
2020-08-05 20:13:21 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2018-02-14 21:05:38 +01:00
2019-06-19 17:09:55 +02:00
2019-09-13 12:33:06 +02:00
2020-07-29 20:09:18 +02:00
2020-07-29 20:09:18 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-03-15 15:20:16 +01:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-11-05 14:03:11 -08:00
2020-04-05 23:26:37 +02:00
2019-05-30 11:26:32 -07:00
2019-06-25 01:32:59 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:38 -07:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2020-06-25 00:50:31 +02:00
2019-06-19 17:09:55 +02:00
2020-07-29 20:09:18 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 11:28:45 +02:00
2019-06-25 01:32:59 +02:00
2019-09-13 12:32:48 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-06-19 17:09:55 +02:00
2019-12-09 10:36:44 -08:00
2019-06-19 17:09:55 +02:00
2020-03-15 15:20:16 +01:00
2019-06-19 17:09:55 +02:00
2017-11-02 11:10:55 +01:00
2019-05-21 10:50:45 +02:00
2020-03-15 15:20:16 +01:00
2019-08-13 12:14:26 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-19 17:09:55 +02:00
2019-06-22 08:59:24 -04:00
2019-06-22 08:59:24 -04:00
2019-05-21 10:50:45 +02:00
2019-05-21 11:28:40 +02:00
2020-07-29 20:09:18 +02:00
2019-06-19 17:09:55 +02:00
2019-05-21 10:50:45 +02:00
2019-05-21 10:50:45 +02:00