diff options
Diffstat (limited to 'net/sctp/sm_make_chunk.c')
-rw-r--r-- | net/sctp/sm_make_chunk.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/net/sctp/sm_make_chunk.c b/net/sctp/sm_make_chunk.c index 69a464f1d2b9..6eeee535e94e 100644 --- a/net/sctp/sm_make_chunk.c +++ b/net/sctp/sm_make_chunk.c | |||
@@ -2827,6 +2827,19 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc, | |||
2827 | union sctp_addr addr; | 2827 | union sctp_addr addr; |
2828 | union sctp_addr_param *addr_param; | 2828 | union sctp_addr_param *addr_param; |
2829 | 2829 | ||
2830 | switch (addr_param->v4.param_hdr.type) { | ||
2831 | case SCTP_PARAM_IPV6_ADDRESS: | ||
2832 | if (!asoc->peer.ipv6_address) | ||
2833 | return SCTP_ERROR_INV_PARAM; | ||
2834 | break; | ||
2835 | case SCTP_PARAM_IPV4_ADDRESS: | ||
2836 | if (!asoc->peer.ipv4_address) | ||
2837 | return SCTP_ERROR_INV_PARAM; | ||
2838 | break; | ||
2839 | default: | ||
2840 | return SCTP_ERROR_INV_PARAM; | ||
2841 | } | ||
2842 | |||
2830 | addr_param = (union sctp_addr_param *) | 2843 | addr_param = (union sctp_addr_param *) |
2831 | ((void *)asconf_param + sizeof(sctp_addip_param_t)); | 2844 | ((void *)asconf_param + sizeof(sctp_addip_param_t)); |
2832 | 2845 | ||