Florian Westphal
210b889fd8
netfilter: nf_tables: fix destination register zeroing
...
[ Upstream commit 1e105e6afa ]
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 >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2020-09-09 19:12:24 +02:00
..
2019-05-30 11:29:21 -07:00
2019-09-05 17:27:21 +02:00
2019-05-30 11:29:22 -07:00
2018-09-26 09:56:07 -07:00
2020-09-09 19:12:24 +02:00
2020-01-29 16:45:33 +01:00
2019-06-19 17:09:07 +02:00
2019-06-05 17:37:07 +02:00
2020-06-30 15:36:45 -04:00
2019-09-16 09:18:03 +02:00
2017-04-12 22:02:36 +02:00
2020-06-03 08:21:01 +02:00
2020-08-11 15:33:39 +02:00
2019-05-30 11:26:41 -07:00
2020-09-09 19:12:23 +02:00
2019-02-28 08:24:23 -07:00
2019-06-05 17:37:05 +02:00
2017-11-02 11:10:55 +01:00
2019-12-31 16:45:03 +01:00
2017-11-02 11:10:55 +01:00
2019-01-23 11:18:00 -08:00
2019-06-19 17:09:55 +02:00
2019-05-24 17:37:53 +02:00
2019-05-21 11:28:40 +02:00
2019-07-04 12:30:48 -07:00
2019-11-05 17:40:16 -08:00
2019-08-17 23:18:54 +02:00
2019-10-30 17:34:35 -07:00
2019-05-21 11:28:45 +02:00
2019-06-19 17:09:55 +02:00
2020-02-05 21:22:46 +00:00
2019-05-30 11:26:41 -07:00
2019-05-30 11:26:32 -07:00
2019-05-21 11:28:45 +02:00
2019-05-30 11:26:32 -07:00
2016-04-25 16:44:27 -04:00
2016-06-25 12:19:35 -04:00
2016-04-25 16:44:27 -04:00
2019-04-19 14:07:40 -07:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:29:52 -07:00
2019-05-30 11:29:52 -07:00
2019-11-09 19:38:36 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-05-21 11:52:39 +02:00
2019-05-21 11:52:39 +02:00
2017-11-04 09:26:51 +09:00
2020-05-27 17:46:24 +02:00
2019-09-16 21:32:57 +02:00
2017-11-02 11:10:55 +01:00
2018-03-05 12:52:45 -05:00
2017-11-04 09:26:51 +09:00
2020-01-04 19:18:58 +01:00
2020-07-22 09:32:47 +02:00
2018-05-20 18:31:42 -04:00
2017-11-02 11:10:55 +01:00
2019-06-19 17:09:55 +02:00
2018-05-28 22:59:54 -04:00
2019-04-22 21:50:53 -07:00
2020-03-18 07:17:44 +01:00
2017-11-02 11:10:55 +01:00
2020-03-05 16:43:32 +01:00
2019-12-18 16:08:47 +01:00
2019-02-27 12:50:17 -08:00
2017-11-02 11:10:55 +01:00
2019-11-08 09:11:49 +01:00
2019-10-23 20:13:22 -07:00
2017-11-02 11:10:55 +01:00
2018-11-17 21:37:29 -08:00
2020-07-22 09:32:46 +02:00
2019-03-22 12:09:31 -07:00
2018-12-10 15:53:04 -08:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-07-01 10:58:23 -07:00
2019-10-25 16:24:32 -07:00
2019-05-30 11:26:32 -07:00
2019-02-22 12:56:24 -08:00
2019-05-30 11:26:41 -07:00
2019-08-28 14:43:03 -07:00
2019-04-22 21:50:53 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-07-03 13:51:54 -07:00
2020-08-19 08:16:23 +02:00
2020-07-22 09:32:48 +02:00
2019-08-08 15:55:10 -07:00
2020-06-17 16:40:32 +02:00
2019-09-13 21:44:19 +02:00
2019-09-27 12:05:02 +02:00
2019-02-08 21:50:15 -08:00
2019-05-30 11:26:32 -07:00
2020-05-14 07:58:20 +02:00
2020-04-21 09:04:45 +02:00
2019-06-18 20:48:45 -04:00
2020-06-03 08:21:37 +02:00
2019-02-27 12:50:17 -08:00
2020-08-19 08:16:10 +02:00
2019-12-18 16:08:17 +01:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-06-19 11:37:47 -04:00
2019-12-18 16:08:42 +01:00
2019-12-18 16:08:40 +01:00
2020-02-11 04:35:48 -08:00
2018-03-27 09:51:23 +02:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2018-07-11 23:10:19 -07:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2017-10-25 12:06:25 +09:00
2014-12-10 15:21:24 -05:00
2019-10-08 13:23:05 -07:00
2014-01-01 22:22:43 -05:00
2014-12-10 15:21:24 -05:00
2018-09-13 09:04:58 -07:00
2019-04-23 19:42:29 -07:00
2020-04-29 16:33:18 +02:00
2019-05-30 11:26:41 -07:00
2019-05-21 11:28:45 +02:00
2017-11-02 11:10:55 +01:00
2019-06-05 17:36:38 +02:00
2019-06-05 17:36:38 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-12-31 16:45:03 +01:00
2020-01-09 10:20:06 +01:00
2018-05-28 22:59:54 -04:00
2020-05-14 07:58:20 +02:00
2017-11-02 11:10:55 +01:00
2018-08-01 09:52:30 -07:00
2019-05-21 11:28:45 +02:00
2019-08-13 20:37:16 -07:00
2019-05-30 11:26:32 -07:00
2019-04-11 13:59:49 -07:00
2020-06-03 08:21:37 +02:00
2016-07-08 12:20:57 +02:00
2017-11-08 16:12:33 +09:00
2017-11-02 11:10:55 +01:00
2019-12-18 16:09:07 +01:00
2019-05-30 11:26:32 -07:00
2020-02-01 09:34:38 +00:00
2020-07-22 09:32:48 +02:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:32 -07:00
2019-09-16 09:18:03 +02:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:32 -07:00
2017-11-02 11:10:55 +01:00
2017-12-05 14:37:13 -05:00
2018-08-28 11:11:47 +02:00
2019-10-09 21:34:31 -07:00
2018-05-16 07:23:35 +02:00
2019-09-20 18:23:33 -07:00
2018-03-13 18:37:02 +02:00
2018-11-06 15:00:45 -08:00
2019-04-22 21:47:25 -07:00
2020-05-20 08:20:07 +02:00
2018-07-21 10:43:12 -05:00
2017-11-02 11:10:55 +01:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2018-04-11 10:33:46 -04:00
2019-02-21 10:34:37 -08:00
2019-05-30 11:26:32 -07:00
2019-09-16 09:02:18 +02:00
2020-08-21 13:05:25 +02:00
2018-03-01 21:21:36 -05:00
2017-11-02 11:10:55 +01:00
2019-06-19 17:09:55 +02:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-08-19 08:16:23 +02:00
2019-05-30 11:26:32 -07:00
2018-05-08 00:02:41 -04:00
2020-06-22 09:31:12 +02:00
2018-07-07 10:58:49 +09:00
2017-11-02 11:10:55 +01:00
2017-08-29 15:16:52 -07:00
2019-03-29 10:53:45 -07:00
2020-05-10 10:31:33 +02:00
2018-02-16 15:57:42 -05:00
2019-06-05 17:37:05 +02:00
2019-10-24 14:53:49 -07:00
2018-01-24 19:13:45 -05:00
2019-06-05 17:30:29 +02:00
2017-11-02 11:10:55 +01:00
2017-11-02 11:10:55 +01:00
2019-12-18 16:09:07 +01:00
2019-08-31 01:08:26 +02:00
2019-06-19 11:23:13 -04:00
2020-08-05 09:59:45 +02:00