]> granicus.if.org Git - php/commitdiff
- MFH: Fixed bug #42512 (ip2long('255.255.255.255') should return 4294967295 on
authorDerick Rethans <derick@php.net>
Sat, 1 Sep 2007 18:38:39 +0000 (18:38 +0000)
committerDerick Rethans <derick@php.net>
Sat, 1 Sep 2007 18:38:39 +0000 (18:38 +0000)
  64-bit PHP).

NEWS
ext/standard/basic_functions.c
ext/standard/tests/network/ip_x86_64.phpt [new file with mode: 0644]

diff --git a/NEWS b/NEWS
index 11a0ea0ae5a3c1153770995737649561eff2fb2e..b337456f26e317a7997f966b14db2fd8b7d8b3b9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ PHP                                                                        NEWS
 - Added optional parameter $provide_object to debug_backtrace(). (Sebastian)
 - Upgraded PCRE to version 7.3 (Nuno)
 
+- Fixed bug #42512 (ip2long('255.255.255.255') should return 4294967295 on
+  64-bit PHP). (Derick)
 - Fixed bug #42462 (Segmentation when trying to set an attribute in a 
   DOMElement). (Rob)
 - Fixed bug #42453 (CGI SAPI does not shut down cleanly with -i/-m/-v cmdline
index debd9254097d329e979e32959dc6410c47295397..5014f9fcb2945167a08ee6d81196ff2144b26a89 100644 (file)
@@ -4340,7 +4340,7 @@ PHP_FUNCTION(ip2long)
                 */
                if (Z_STRLEN_PP(str) == sizeof("255.255.255.255") - 1 &&
                        !memcmp(Z_STRVAL_PP(str), "255.255.255.255", sizeof("255.255.255.255") - 1)) {
-                       RETURN_LONG(-1);
+                       RETURN_LONG(0xFFFFFFFF);
                }
                
                RETURN_FALSE;
diff --git a/ext/standard/tests/network/ip_x86_64.phpt b/ext/standard/tests/network/ip_x86_64.phpt
new file mode 100644 (file)
index 0000000..bc3e72c
--- /dev/null
@@ -0,0 +1,67 @@
+--TEST--
+ip2long() & long2ip() tests
+--SKIPIF--
+<?php
+if (PHP_INT_SIZE == 4) die("skip this test is for >32bit platform only");
+?>
+--FILE--
+<?php
+
+$array = array(
+       "127.0.0.1",
+       "10.0.0.1",
+       "255.255.255.255",
+       "255.255.255.0",
+       "0.0.0.0",
+       "66.163.161.116",
+);
+
+foreach ($array as $ip) {
+       var_dump($long = ip2long($ip));
+       var_dump(long2ip($long));
+}
+
+var_dump(ip2long());
+var_dump(ip2long(""));
+var_dump(ip2long("777.777.777.777"));
+var_dump(ip2long("111.111.111.111"));
+var_dump(ip2long(array()));
+
+var_dump(long2ip());
+var_dump(long2ip(-110000));
+var_dump(long2ip(""));
+var_dump(long2ip(array()));
+
+echo "Done\n";
+?>
+--EXPECTF--    
+int(2130706433)
+string(9) "127.0.0.1"
+int(167772161)
+string(8) "10.0.0.1"
+int(4294967295)
+string(15) "255.255.255.255"
+int(4294967040)
+string(13) "255.255.255.0"
+int(0)
+string(7) "0.0.0.0"
+int(1118019956)
+string(14) "66.163.161.116"
+
+Warning: Wrong parameter count for ip2long() in %s on line %d
+NULL
+bool(false)
+bool(false)
+int(1869573999)
+
+Notice: Array to string conversion in %s on line %d
+bool(false)
+
+Warning: Wrong parameter count for long2ip() in %s on line %d
+NULL
+string(13) "255.254.82.80"
+string(7) "0.0.0.0"
+
+Notice: Array to string conversion in %s on line %d
+string(7) "0.0.0.0"
+Done