]> git.hungrycats.org Git - linux/commitdiff
[SCTP] Fix bugs in byte order conversion while processing address
authorSridhar Samudrala <sri@us.ibm.com>
Fri, 16 Jan 2004 02:58:25 +0000 (18:58 -0800)
committerSridhar Samudrala <sri@us.ibm.com>
Fri, 16 Jan 2004 02:58:25 +0000 (18:58 -0800)
related SCTP socket options.

net/sctp/socket.c

index 88dbdfaf02734efb92f6a558ba53516d9850dc37..5dd870b1091ba6ba925656cc6d147f2f3e1fe404 100644 (file)
@@ -152,10 +152,14 @@ struct sctp_transport *sctp_addr_id2transport(struct sock *sk,
 {
        struct sctp_association *addr_asoc = NULL, *id_asoc = NULL;
        struct sctp_transport *transport;
+       union sctp_addr *laddr = (union sctp_addr *)addr;
 
+       laddr->v4.sin_port = ntohs(laddr->v4.sin_port);
        addr_asoc = sctp_endpoint_lookup_assoc(sctp_sk(sk)->ep,
                                               (union sctp_addr *)addr,
                                               &transport);
+       laddr->v4.sin_port = htons(laddr->v4.sin_port);
+
        if (!addr_asoc)
                return NULL;
 
@@ -3008,9 +3012,13 @@ static int sctp_getsockopt_primary_addr(struct sock *sk, int len,
 
        if (!asoc->peer.primary_path)
                return -ENOTCONN;
-
+       
+       asoc->peer.primary_path->ipaddr.v4.sin_port =
+               htons(asoc->peer.primary_path->ipaddr.v4.sin_port);
        memcpy(&prim.ssp_addr, &asoc->peer.primary_path->ipaddr,
               sizeof(union sctp_addr));
+       asoc->peer.primary_path->ipaddr.v4.sin_port =
+               ntohs(asoc->peer.primary_path->ipaddr.v4.sin_port);
 
        sctp_get_pf_specific(sk->sk_family)->addr_v4map(sp,
                        (union sctp_addr *)&prim.ssp_addr);