[SCTP]: Switch sctp_cookie ->peer_addr to net-endian.
authorAl Viro <viro@zeniv.linux.org.uk>
Tue, 21 Nov 2006 01:09:17 +0000 (17:09 -0800)
committerDavid S. Miller <davem@sunset.davemloft.net>
Sun, 3 Dec 2006 05:26:43 +0000 (21:26 -0800)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/sctp/sm_make_chunk.c
net/sctp/sm_statefuns.c

index b5d4a61ed7a7bd11ea68ddd002308e0ad3d99cb4..59536368f79a680f749d69438944cc6bf9fb86d4 100644 (file)
@@ -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;
index 0848309773a5beb49340548f6e1e068e9efb0704..174acc3c55268561f90ad797bd0570c8e6e94631 100644 (file)
@@ -598,6 +598,7 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep,
        struct sctp_ulpevent *ev, *ai_ev = NULL;
        int error = 0;
        struct sctp_chunk *err_chk_p;
+       union sctp_addr tmp;
 
        /* If the packet is an OOTB packet which is temporarily on the
         * control endpoint, respond with an ABORT.
@@ -665,8 +666,9 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep,
         */
        peer_init = &chunk->subh.cookie_hdr->c.peer_init[0];
 
+       flip_to_h(&tmp, &chunk->subh.cookie_hdr->c.peer_addr);
        if (!sctp_process_init(new_asoc, chunk->chunk_hdr->type,
-                              &chunk->subh.cookie_hdr->c.peer_addr,
+                              &tmp,
                               peer_init, GFP_ATOMIC))
                goto nomem_init;