# This is a BitKeeper generated diff -Nru style patch. # # ChangeSet # 2004/10/14 01:04:09+02:00 yasuyuki.kozakai@toshiba.co.jp # [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 # Signed-off-by: Patrick McHardy # # net/ipv6/netfilter/ip6t_multiport.c # 2004/10/14 01:03:43+02:00 yasuyuki.kozakai@toshiba.co.jp +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 # Signed-off-by: Patrick McHardy # 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