- Fixed bug #42512 (ip2long('255.255.255.255') should return 4294967295 on

64-bit PHP).
This commit is contained in:
Derick Rethans 2007-09-01 18:37:27 +00:00
parent b357cf9d9b
commit 773fe3adc7
2 changed files with 68 additions and 1 deletions

View 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;

View file

@ -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