summaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorLiping Zhang <liping.zhang@spreadtrum.com>2016-08-08 22:10:26 +0800
committerPablo Neira Ayuso <pablo@netfilter.org>2016-08-09 10:39:26 +0200
commitaa0c2c68abd1e2915656cc81afdb195bc8595dec (patch)
tree357b67f1a5a9e7339701af9b3dbce83f026c9f5a /net
parent00a3101f561816e58de054a470484996f78eb5eb (diff)
downloadlinux-aa0c2c68abd1e2915656cc81afdb195bc8595dec.tar.gz
linux-aa0c2c68abd1e2915656cc81afdb195bc8595dec.tar.bz2
linux-aa0c2c68abd1e2915656cc81afdb195bc8595dec.zip
netfilter: ctnetlink: reject new conntrack request with different l4proto
Currently, user can add a conntrack with different l4proto via nfnetlink. For example, original tuple is TCP while reply tuple is SCTP. This is invalid combination, we should report EINVAL to userspace. Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'net')
-rw-r--r--net/netfilter/nf_conntrack_netlink.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/netfilter/nf_conntrack_netlink.c b/net/netfilter/nf_conntrack_netlink.c
index b9bfe64e232c..fdfc71f416b7 100644
--- a/net/netfilter/nf_conntrack_netlink.c
+++ b/net/netfilter/nf_conntrack_netlink.c
@@ -1894,6 +1894,8 @@ static int ctnetlink_new_conntrack(struct net *net, struct sock *ctnl,
if (!cda[CTA_TUPLE_ORIG] || !cda[CTA_TUPLE_REPLY])
return -EINVAL;
+ if (otuple.dst.protonum != rtuple.dst.protonum)
+ return -EINVAL;
ct = ctnetlink_create_conntrack(net, &zone, cda, &otuple,
&rtuple, u3);