浏览代码

netfilter: fix CONFIG_COMPAT support

commit f3c5c1bfd430858d3a05436f82c51e53104feb6b
(netfilter: xtables: make ip_tables reentrant) forgot to
also compute the jumpstack size in the compat handlers.

Result is that "iptables -I INPUT -j userchain" turns into -j DROP.

Reported by Sebastian Roesner on #netfilter, closes
http://bugzilla.netfilter.org/show_bug.cgi?id=669.

Note: arptables change is compile-tested only.

Signed-off-by: Florian Westphal <fw@strlen.de>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Tested-by: Mikael Pettersson <mikpe@it.uu.se>
Signed-off-by: David S. Miller <davem@davemloft.net>
Florian Westphal 14 年之前
父节点
当前提交
cca77b7c81
共有 3 个文件被更改,包括 9 次插入0 次删除
  1. 3 0
      net/ipv4/netfilter/arp_tables.c
  2. 3 0
      net/ipv4/netfilter/ip_tables.c
  3. 3 0
      net/ipv6/netfilter/ip6_tables.c

+ 3 - 0
net/ipv4/netfilter/arp_tables.c

@@ -1420,6 +1420,9 @@ static int translate_compat_table(const char *name,
 		if (ret != 0)
 		if (ret != 0)
 			break;
 			break;
 		++i;
 		++i;
+		if (strcmp(arpt_get_target(iter1)->u.user.name,
+		    XT_ERROR_TARGET) == 0)
+			++newinfo->stacksize;
 	}
 	}
 	if (ret) {
 	if (ret) {
 		/*
 		/*

+ 3 - 0
net/ipv4/netfilter/ip_tables.c

@@ -1751,6 +1751,9 @@ translate_compat_table(struct net *net,
 		if (ret != 0)
 		if (ret != 0)
 			break;
 			break;
 		++i;
 		++i;
+		if (strcmp(ipt_get_target(iter1)->u.user.name,
+		    XT_ERROR_TARGET) == 0)
+			++newinfo->stacksize;
 	}
 	}
 	if (ret) {
 	if (ret) {
 		/*
 		/*

+ 3 - 0
net/ipv6/netfilter/ip6_tables.c

@@ -1766,6 +1766,9 @@ translate_compat_table(struct net *net,
 		if (ret != 0)
 		if (ret != 0)
 			break;
 			break;
 		++i;
 		++i;
+		if (strcmp(ip6t_get_target(iter1)->u.user.name,
+		    XT_ERROR_TARGET) == 0)
+			++newinfo->stacksize;
 	}
 	}
 	if (ret) {
 	if (ret) {
 		/*
 		/*