]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
ipv6/udp: use sticky pktinfo egress ifindex on connect()
authorPaolo Abeni <pabeni@redhat.com>
Fri, 29 Jan 2016 11:30:20 +0000 (12:30 +0100)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 26 May 2016 22:45:17 +0000 (15:45 -0700)
Orabug: 23330942

[ Upstream commit 1cdda91871470f15e79375991bd2eddc6e86ddb1 ]

Currently, the egress interface index specified via IPV6_PKTINFO
is ignored by __ip6_datagram_connect(), so that RFC 3542 section 6.7
can be subverted when the user space application calls connect()
before sendmsg().
Fix it by initializing properly flowi6_oif in connect() before
performing the route lookup.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
(cherry picked from commit d04aa950dbd249222f87c96fac9c547890524f5a)

Signed-off-by: Dan Duval <dan.duval@oracle.com>
net/ipv6/datagram.c

index 13ca4cf5616f845ba7b610003349f2ec83721d07..8e6cb3f143268fcd1240d9405e476a8ba0c7d87d 100644 (file)
@@ -162,6 +162,9 @@ ipv4_connected:
        fl6.fl6_dport = inet->inet_dport;
        fl6.fl6_sport = inet->inet_sport;
 
+       if (!fl6.flowi6_oif)
+               fl6.flowi6_oif = np->sticky_pktinfo.ipi6_ifindex;
+
        if (!fl6.flowi6_oif && (addr_type&IPV6_ADDR_MULTICAST))
                fl6.flowi6_oif = np->mcast_oif;