|
@@ -2827,6 +2827,19 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
|
|
|
union sctp_addr addr;
|
|
|
union sctp_addr_param *addr_param;
|
|
|
|
|
|
+ switch (addr_param->v4.param_hdr.type) {
|
|
|
+ case SCTP_PARAM_IPV6_ADDRESS:
|
|
|
+ if (!asoc->peer.ipv6_address)
|
|
|
+ return SCTP_ERROR_INV_PARAM;
|
|
|
+ break;
|
|
|
+ case SCTP_PARAM_IPV4_ADDRESS:
|
|
|
+ if (!asoc->peer.ipv4_address)
|
|
|
+ return SCTP_ERROR_INV_PARAM;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ return SCTP_ERROR_INV_PARAM;
|
|
|
+ }
|
|
|
+
|
|
|
addr_param = (union sctp_addr_param *)
|
|
|
((void *)asconf_param + sizeof(sctp_addip_param_t));
|
|
|
|