netfilter: nft_meta: fix wrong value dereference in nft_meta_set_eval
authorTaehee Yoo <ap420073@gmail.com>
Thu, 17 May 2018 13:49:49 +0000 (22:49 +0900)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 23 May 2018 07:29:05 +0000 (09:29 +0200)
commit97a0549b15a0b466c47f6a0143a490a082c64b4e
tree22910c45a0161744e71401a1a813400fc2b4067d
parent94c752f99954797da583a84c4907ff19e92550a4
netfilter: nft_meta: fix wrong value dereference in nft_meta_set_eval

In the nft_meta_set_eval, nftrace value is dereferenced as u32 from sreg.
But correct type is u8. so that sometimes incorrect value is dereferenced.

Steps to reproduce:

   %nft add table ip filter
   %nft add chain ip filter input { type filter hook input priority 4\; }
   %nft add rule ip filter input nftrace set 0
   %nft monitor

Sometimes, we can see trace messages.

   trace id 16767227 ip filter input packet: iif "enp2s0"
   ether saddr xx:xx:xx:xx:xx:xx ether daddr xx:xx:xx:xx:xx:xx
   ip saddr 192.168.0.1 ip daddr 255.255.255.255 ip dscp cs0
   ip ecn not-ect ip
   trace id 16767227 ip filter input rule nftrace set 0 (verdict continue)
   trace id 16767227 ip filter input verdict continue
   trace id 16767227 ip filter input

Signed-off-by: Taehee Yoo <ap420073@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_meta.c