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

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

index fa5ea69e02e6ec7d8e808dd93679d87f7585dd78..01beaf8fb2a4a0649af70d38f892129a1ec46a0d 100644 (file)
@@ -4284,7 +4284,7 @@ PHP_FUNCTION(ip2long)
                 */
                if (addr_len == sizeof("255.255.255.255") - 1 &&
                        !memcmp(addr, "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