iliaa Mon May 4 13:12:35 2009 UTC Modified files: (Branch: PHP_5_2) /php-src NEWS /php-src/main network.c Log: MFB: Fixed bug #48131 (Don't try to bind ipv4 addresses to ipv6 ips via bindto) http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.1487&r2=1.2027.2.547.2.1488&diff_format=u Index: php-src/NEWS diff -u php-src/NEWS:1.2027.2.547.2.1487 php-src/NEWS:1.2027.2.547.2.1488 --- php-src/NEWS:1.2027.2.547.2.1487 Sun May 3 19:09:22 2009 +++ php-src/NEWS Mon May 4 13:12:34 2009 @@ -11,6 +11,8 @@ - Fixed segfault on invalid session.save_path. (Hannes) - Fixed leaks in imap when a mail_criteria is used. (Pierre) +- Fixed bug #48131 (Don't try to bind ipv4 addresses to ipv6 ips via + bindto). (Ilia) - Fixed bug #48132 (configure check for curl ssl support fails with --disable-rpath). (Jani) - Fixed bug #48058 (Year formatter goes wrong with out-of-int range). (Derick) http://cvs.php.net/viewvc.cgi/php-src/main/network.c?r1=1.118.2.2.2.16&r2=1.118.2.2.2.17&diff_format=u Index: php-src/main/network.c diff -u php-src/main/network.c:1.118.2.2.2.16 php-src/main/network.c:1.118.2.2.2.17 --- php-src/main/network.c:1.118.2.2.2.16 Sat Jan 3 00:06:59 2009 +++ php-src/main/network.c Mon May 4 13:12:35 2009 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: network.c,v 1.118.2.2.2.16 2009/01/03 00:06:59 felipe Exp $ */ +/* $Id: network.c,v 1.118.2.2.2.17 2009/05/04 13:12:35 iliaa Exp $ */ /*#define DEBUG_MAIN_NETWORK 1*/ @@ -423,9 +423,14 @@ switch (sa->sa_family) { #if HAVE_GETADDRINFO && HAVE_IPV6 case AF_INET6: - ((struct sockaddr_in6 *)sa)->sin6_family = sa->sa_family; - ((struct sockaddr_in6 *)sa)->sin6_port = htons(port); - socklen = sizeof(struct sockaddr_in6); + if (strstr(bindto, ':')) { + ((struct sockaddr_in6 *)sa)->sin6_family = sa->sa_family; + ((struct sockaddr_in6 *)sa)->sin6_port = htons(port); + socklen = sizeof(struct sockaddr_in6); + } else { + socklen = 0; + sa = NULL; + } break; #endif case AF_INET: @@ -786,9 +791,14 @@ switch (sa->sa_family) { #if HAVE_GETADDRINFO && HAVE_IPV6 case AF_INET6: - ((struct sockaddr_in6 *)sa)->sin6_family = sa->sa_family; - ((struct sockaddr_in6 *)sa)->sin6_port = htons(port); - socklen = sizeof(struct sockaddr_in6); + if (strstr(bindto, ':')) { + ((struct sockaddr_in6 *)sa)->sin6_family = sa->sa_family; + ((struct sockaddr_in6 *)sa)->sin6_port = htons(port); + socklen = sizeof(struct sockaddr_in6); + } else { + socklen = 0; + sa = NULL; + } break; #endif case AF_INET: @@ -808,7 +818,7 @@ if (bindto) { struct sockaddr *local_address = NULL; int local_address_len = 0; - + if (sa->sa_family == AF_INET) { struct sockaddr_in *in4 = emalloc(sizeof(struct sockaddr_in));
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php