Skip to content

Commit

Permalink
netfilter: xt_multiport: Fix wrong unmatch result with multiple ports
Browse files Browse the repository at this point in the history
I lost one test case in the last commit for xt_multiport.
For example, the rule is "-m multiport --dports 22,80,443".
When first port is unmatched and the second is matched, the curent codes
could not return the right result.
It would return false directly when the first port is unmatched.

Fixes: dd2602d ("netfilter: xt_multiport: Use switch case instead
of multiple condition checks")
Signed-off-by: Gao Feng <fgao@ikuai8.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
  • Loading branch information
Gao Feng authored and Pablo Neira Ayuso committed Dec 6, 2016
1 parent 1814096 commit 1ed9887
Showing 1 changed file with 19 additions and 7 deletions.
26 changes: 19 additions & 7 deletions net/netfilter/xt_multiport.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,18 @@ ports_match_v1(const struct xt_multiport_v1 *minfo,

switch (minfo->flags) {
case XT_MULTIPORT_SOURCE:
return (src >= s && src <= e) ^ minfo->invert;
if (src >= s && src <= e)
return true ^ minfo->invert;
break;
case XT_MULTIPORT_DESTINATION:
return (dst >= s && dst <= e) ^ minfo->invert;
if (dst >= s && dst <= e)
return true ^ minfo->invert;
break;
case XT_MULTIPORT_EITHER:
return ((dst >= s && dst <= e) ||
(src >= s && src <= e)) ^ minfo->invert;
if ((dst >= s && dst <= e) ||
(src >= s && src <= e))
return true ^ minfo->invert;
break;
default:
break;
}
Expand All @@ -59,11 +65,17 @@ ports_match_v1(const struct xt_multiport_v1 *minfo,

switch (minfo->flags) {
case XT_MULTIPORT_SOURCE:
return (src == s) ^ minfo->invert;
if (src == s)
return true ^ minfo->invert;
break;
case XT_MULTIPORT_DESTINATION:
return (dst == s) ^ minfo->invert;
if (dst == s)
return true ^ minfo->invert;
break;
case XT_MULTIPORT_EITHER:
return (src == s || dst == s) ^ minfo->invert;
if (src == s || dst == s)
return true ^ minfo->invert;
break;
default:
break;
}
Expand Down

0 comments on commit 1ed9887

Please sign in to comment.