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

Reply via email to