diff --git a/ext/standard/basic_functions.c b/ext/standard/basic_functions.c index fa5ea69e02e..01beaf8fb2a 100644 --- a/ext/standard/basic_functions.c +++ b/ext/standard/basic_functions.c @@ -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 index 00000000000..bc3e72c2a2c --- /dev/null +++ b/ext/standard/tests/network/ip_x86_64.phpt @@ -0,0 +1,67 @@ +--TEST-- +ip2long() & long2ip() tests +--SKIPIF-- +32bit platform only"); +?> +--FILE-- + +--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