linux/net/sctp
Xin Long 782b8d5e9a sctp: do not allow the v4 socket to bind a v4mapped v6 address
commit c5006b8aa7 upstream.

The check in sctp_sockaddr_af is not robust enough to forbid binding a
v4mapped v6 addr on a v4 socket.

The worse thing is that v4 socket's bind_verify would not convert this
v4mapped v6 addr to a v4 addr. syzbot even reported a crash as the v4
socket bound a v6 addr.

This patch is to fix it by doing the common sa.sa_family check first,
then AF_INET check for v4mapped v6 addrs.

Fixes: 7dab83de50 ("sctp: Support ipv6only AF_INET6 sockets.")
Reported-by: syzbot+7b7b518b1228d2743963@syzkaller.appspotmail.com
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: Xin Long <lucien.xin@gmail.com>
Acked-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2018-03-03 15:52:24 +00:00
..
associola.c sctp: fix the transports round robin issue when init is retransmitted 2016-05-01 00:05:58 +02:00
auth.c sctp: translate host order to network order when setting a hmacid 2015-12-14 10:17:13 +00:00
bind_addr.c sctp: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
chunk.c sctp: fix checkpatch errors with space required or prohibited 2013-12-26 13:47:47 -05:00
command.c sctp: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
debug.c sctp: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
endpointola.c net: sctp: migrate most recently used transport to ktime 2014-06-11 12:23:17 -07:00
input.c sctp: add the missing sock_owned_by_user check in sctp_icmp_redirect 2018-01-01 20:51:57 +00:00
inqueue.c net: sctp: fix remote memory pressure from excessive queueing 2014-11-13 11:48:27 +00:00
ipv6.c net/sctp: Always set scope_id in sctp_inet6_skb_msgname 2018-02-13 18:42:23 +00:00
Kconfig net: sctp: get rid of SCTP_DBG_TSNS entirely 2013-07-02 00:08:03 -07:00
Makefile sctp: implement sctp association probing module 2010-04-30 22:41:09 -04:00
objcnt.c sctp: fix checkpatch errors with (foo*)|foo * bar|foo* bar 2013-12-26 13:47:47 -05:00
output.c sctp: Fix race between OOTB responce and route removal 2015-07-06 10:40:21 +01:00
outqueue.c sctp: start t5 timer only when peer rwnd is 0 and local state is SHUTDOWN_PENDING 2016-01-28 11:57:53 +00:00
primitive.c sctp: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
probe.c sctp: loading sctp when load sctp_probe 2013-12-16 20:04:27 -05:00
proc.c snmp: fix some left over of snmp stats 2014-05-14 15:33:47 -04:00
protocol.c sctp: Fixup v4mapped behaviour to comply with Sock API 2018-02-13 18:42:22 +00:00
sm_make_chunk.c sctp: use the same clock as if sock source timestamps were on 2016-01-04 17:20:43 +00:00
sm_sideeffect.c sctp: fix a type cast warnings that causes a_rwnd gets the wrong value 2018-01-01 20:52:00 +00:00
sm_statefuns.c sctp: validate chunk len before actually using it 2017-02-23 03:54:47 +00:00
sm_statetable.c sctp: fix checkpatch errors with indent 2013-12-26 13:47:48 -05:00
socket.c sctp: do not allow the v4 socket to bind a v4mapped v6 address 2018-03-03 15:52:24 +00:00
ssnmap.c sctp: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
sysctl.c net: sctp: prevent writes to cookie_hmac_alg from accessing invalid memory 2016-01-28 10:41:46 +00:00
transport.c sctp: Fixup v4mapped behaviour to comply with Sock API 2018-02-13 18:42:22 +00:00
tsnmap.c sctp: Fix FSF address in file headers 2013-12-06 12:37:56 -05:00
ulpevent.c sctp: Fixup v4mapped behaviour to comply with Sock API 2018-02-13 18:42:22 +00:00
ulpqueue.c sctp: add support for busy polling to sctp protocol 2014-04-20 18:18:55 -04:00