]> err.no Git - linux-2.6/blobdiff - net/sctp/endpointola.c
[SCTP]: sctp_endpoint_lookup_assoc() switched to net-endian.
[linux-2.6] / net / sctp / endpointola.c
index d77fe9232dd1c0ec383a71a7a054a9c6d3cafada..5ffb1af336c0180321a35e5fcf8cc1ad7ed68d18 100644 (file)
@@ -228,12 +228,10 @@ struct sctp_endpoint *sctp_endpoint_is_match(struct sctp_endpoint *ep,
                                               const union sctp_addr *laddr)
 {
        struct sctp_endpoint *retval;
-       union sctp_addr tmp;
-       flip_to_n(&tmp, laddr);
 
        sctp_read_lock(&ep->base.addr_lock);
-       if (ep->base.bind_addr.port == laddr->v4.sin_port) {
-               if (sctp_bind_addr_match(&ep->base.bind_addr, &tmp,
+       if (htons(ep->base.bind_addr.port) == laddr->v4.sin_port) {
+               if (sctp_bind_addr_match(&ep->base.bind_addr, laddr,
                                         sctp_sk(ep->base.sk))) {
                        retval = ep;
                        goto out;
@@ -260,7 +258,7 @@ static struct sctp_association *__sctp_endpoint_lookup_assoc(
        struct sctp_association *asoc;
        struct list_head *pos;
 
-       rport = paddr->v4.sin_port;
+       rport = ntohs(paddr->v4.sin_port);
 
        list_for_each(pos, &ep->asocs) {
                asoc = list_entry(pos, struct sctp_association, asocs);
@@ -348,8 +346,10 @@ static void sctp_endpoint_bh_rcv(struct sctp_endpoint *ep)
                 * COOKIE-ECHO chunk.
                 */
                if (NULL == chunk->asoc) {
+                       union sctp_addr tmp;
+                       flip_to_n(&tmp, sctp_source(chunk));
                        asoc = sctp_endpoint_lookup_assoc(ep,
-                                                         sctp_source(chunk),
+                                                         &tmp,
                                                          &transport);
                        chunk->asoc = asoc;
                        chunk->transport = transport;