mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 20:02:10 -04:00
netfilter: xt_conntrack: fix inverted conntrack direction test
--ctdir ORIGINAL matches REPLY packets, and vv:
userspace sets "invert_flags &= ~XT_CONNTRACK_DIRECTION" in ORIGINAL
case.
Thus: (CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) ^
!!(info->invert_flags & XT_CONNTRACK_DIRECTION))
yields "1 ^ 0", which is true -> returns false.
Reproducer:
iptables -I OUTPUT 1 -p tcp --syn -m conntrack --ctdir ORIGINAL
Signed-off-by: Florian Westphal <fwestphal@astaro.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
This commit is contained in:
committed by
Patrick McHardy
parent
b7225041e9
commit
96120d86fe
@@ -195,7 +195,7 @@ conntrack_mt(const struct sk_buff *skb, struct xt_action_param *par,
|
||||
return info->match_flags & XT_CONNTRACK_STATE;
|
||||
if ((info->match_flags & XT_CONNTRACK_DIRECTION) &&
|
||||
(CTINFO2DIR(ctinfo) == IP_CT_DIR_ORIGINAL) ^
|
||||
!!(info->invert_flags & XT_CONNTRACK_DIRECTION))
|
||||
!(info->invert_flags & XT_CONNTRACK_DIRECTION))
|
||||
return false;
|
||||
|
||||
if (info->match_flags & XT_CONNTRACK_ORIGSRC)
|
||||
|
||||
Reference in New Issue
Block a user