|
@@ -1227,6 +1227,7 @@ struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *ep,
|
|
|
struct sk_buff *skb;
|
|
|
sctp_scope_t scope;
|
|
|
struct sctp_af *af;
|
|
|
+ union sctp_addr tmp;
|
|
|
|
|
|
/* Create the bare association. */
|
|
|
scope = sctp_scope(sctp_source(chunk));
|
|
@@ -1239,7 +1240,8 @@ struct sctp_association *sctp_make_temp_asoc(const struct sctp_endpoint *ep,
|
|
|
af = sctp_get_af_specific(ipver2af(skb->nh.iph->version));
|
|
|
if (unlikely(!af))
|
|
|
goto fail;
|
|
|
- af->from_skb(&asoc->c.peer_addr, skb, 1);
|
|
|
+ af->from_skb(&tmp, skb, 1);
|
|
|
+ flip_to_n(&asoc->c.peer_addr, &tmp);
|
|
|
nodata:
|
|
|
return asoc;
|
|
|
|
|
@@ -1439,7 +1441,7 @@ no_hmac:
|
|
|
goto fail;
|
|
|
}
|
|
|
|
|
|
- if (ntohs(chunk->sctp_hdr->source) != bear_cookie->peer_addr.v4.sin_port ||
|
|
|
+ if (chunk->sctp_hdr->source != bear_cookie->peer_addr.v4.sin_port ||
|
|
|
ntohs(chunk->sctp_hdr->dest) != bear_cookie->my_port) {
|
|
|
*error = -SCTP_IERROR_BAD_PORTS;
|
|
|
goto fail;
|