Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e18b3ed authored by Dan Carpenter's avatar Dan Carpenter Committed by David S. Miller
Browse files

cls_u32: signedness bug



skb_headroom() is unsigned so "skb_headroom(skb) + toff" is also
unsigned and can't be less than zero.  This test was added in 66d50d25:
"u32: negative offset fix"  It was supposed to fix a regression.

Signed-off-by: default avatarDan Carpenter <error27@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 51e97a12
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ static int u32_classify(struct sk_buff *skb, struct tcf_proto *tp, struct tcf_re
			int toff = off + key->off + (off2 & key->offmask);
			__be32 *data, _data;

			if (skb_headroom(skb) + toff < 0)
			if (skb_headroom(skb) + toff > INT_MAX)
				goto out;

			data = skb_header_pointer(skb, toff, 4, &_data);