]> Zhao Yanbai Git Server - minix.git/commitdiff
allow bind() with addr len >= sizeof(sockaddr_in)
authorBen Gras <ben@minix3.org>
Fri, 5 Aug 2011 20:55:57 +0000 (20:55 +0000)
committerBen Gras <ben@minix3.org>
Fri, 5 Aug 2011 20:58:03 +0000 (22:58 +0200)
. specifically, if it's struct sockaddr, which is
  1 byte larger than sockaddr_in
. unbreaks some applications
. debugged and solved by Jan Wieck

lib/nbsd_libc/sys-minix/bind.c

index b8ceb898486fd31569e0687221025d58fc4a8ede..666164af1d9304b82fbc15537c9b388d7a59a92d 100644 (file)
@@ -93,7 +93,7 @@ static int _tcp_bind(int sock, const struct sockaddr *address,
        struct sockaddr_in *sinp;
 
        sinp= (struct sockaddr_in *)address;
-       if (sinp->sin_family != AF_INET || address_len != sizeof(*sinp))
+       if (sinp->sin_family != AF_INET || address_len < sizeof(*sinp))
        {
 #if DEBUG
                fprintf(stderr, "bind(tcp): sin_family = %d, len = %d\n",
@@ -133,7 +133,7 @@ static int _udp_bind(int sock, const struct sockaddr *address,
        struct sockaddr_in *sinp;
 
        sinp= (struct sockaddr_in *)address;
-       if (sinp->sin_family != AF_INET || address_len != sizeof(*sinp))
+       if (sinp->sin_family != AF_INET || address_len < sizeof(*sinp))
        {
 #if DEBUG
                fprintf(stderr, "bind(udp): sin_family = %d, len = %d\n",