Browse Source

[SCTP] bug: sctp_find_unmatch_addr() compares net-endian to host-endian

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Al Viro 18 years ago
parent
commit
d5c747f6ef
1 changed files with 3 additions and 1 deletions
  1. 3 1
      net/sctp/bind_addr.c

+ 3 - 1
net/sctp/bind_addr.c

@@ -332,12 +332,14 @@ union sctp_addr *sctp_find_unmatch_addr(struct sctp_bind_addr	*bp,
 		
 		
 		addr_buf = (union sctp_addr *)addrs;
 		addr_buf = (union sctp_addr *)addrs;
 		for (i = 0; i < addrcnt; i++) {
 		for (i = 0; i < addrcnt; i++) {
+			union sctp_addr tmp;
 			addr = (union sctp_addr *)addr_buf;
 			addr = (union sctp_addr *)addr_buf;
 			af = sctp_get_af_specific(addr->v4.sin_family);
 			af = sctp_get_af_specific(addr->v4.sin_family);
 			if (!af) 
 			if (!af) 
 				return NULL;
 				return NULL;
+			flip_to_h(&tmp, addr);
 
 
-			if (opt->pf->cmp_addr(&laddr->a, addr, opt))
+			if (opt->pf->cmp_addr(&laddr->a, &tmp, opt))
 				break;
 				break;
 
 
 			addr_buf += af->sockaddr_len;
 			addr_buf += af->sockaddr_len;