Skip to contentSkip to conversation

: Fix checks in ip6t_multiport.c

PATCH In review Patrick McHardy 1 participant 1 message Oct 14, 2004 netfilter

lore
Share & tools
lore
#0 lore raw

PATCH 4/5 : Fix checks in ip6t_multiport.c

This patch makes ip6t_multiport check for argument size and fixes a check against the wrong flags.

# This is a BitKeeper generated diff -Nru style patch. #
# ChangeSet
# 2004/10/14 01:04:09+02:00 [email protected]
# [NETFILTER]: Fix checks in ip6t_multiport.c
#
# The first patch fixes following bugs in ip6t_multiport.c,
#
# - missing check the size of the preference data.
# - IP6T_INV_PROTO should check with not ip->flags but ip->invflags.
#
# Signed-off-by: Yasuyuki KOZAKAI <[email protected]>
# Signed-off-by: Patrick McHardy <[email protected]>
#

# net/ipv6/netfilter/ip6t_multiport.c
#   2004/10/14 01:03:43+02:00 [email protected] +4 -1
#   [NETFILTER]: Fix checks in ip6t_multiport.c
#   
#   The first patch fixes following bugs in ip6t_multiport.c,
#   
#     - missing check the size of the preference data.
#     - IP6T_INV_PROTO should check with not ip->flags but ip->invflags.
#   
#   Signed-off-by: Yasuyuki KOZAKAI <[email protected]>
#   Signed-off-by: Patrick McHardy <[email protected]>
# 
diff -Nru a/net/ipv6/netfilter/ip6t_multiport.c b/net/ipv6/netfilter/ip6t_multiport.c
--- a/net/ipv6/netfilter/ip6t_multiport.c	2004-10-14 01:37:19 +02:00
+++ b/net/ipv6/netfilter/ip6t_multiport.c	2004-10-14 01:37:19 +02:00
@@ -87,9 +87,12 @@
 {
 	const struct ip6t_multiport *multiinfo = matchinfo;

+ if (matchsize != IP6T_ALIGN(sizeof(struct ip6t_multiport)))
+ return 0;
+
/* Must specify proto == TCP/UDP, no unknown flags or bad count */ return (ip->proto == IPPROTO_TCP || ip->proto == IPPROTO_UDP)
- && !(ip->flags & IP6T_INV_PROTO)
+ && !(ip->invflags & IP6T_INV_PROTO)
&& matchsize == IP6T_ALIGN(sizeof(struct ip6t_multiport)) && (multiinfo->flags == IP6T_MULTIPORT_SOURCE
|| multiinfo->flags == IP6T_MULTIPORT_DESTINATION