ID: 38197 Updated by: [EMAIL PROTECTED] Reported By: gk at gknw dot de -Status: Open +Status: Bogus Bug Type: Network related Operating System: all PHP Version: 5.1.4 New Comment:
Your patch won't work as 0xffffffff is not a string, but float. Also, I don't really see why do you need the function in this case - just (int)0xffffffff is enough. And I don't think we're going to support invalid IP addresses in a function which is supposed to accept IP addresses. Previous Comments: ------------------------------------------------------------------------ [2006-07-25 12:46:06] gk at gknw dot de I agree that 0xffffffff is not an IP address and the underlying inet_addr() function doesn't think it's valid - but it doesnt think it's valid with 255.255.255.255 either, and to capture that there was code introduced with PHP 5.x. With only _two_ additional lines of code we could again get the same behaviour as with PHP 4.x: ===================================================== --- basic_functions.c.orig Sun Aug 21 20:36:34 2005 +++ basic_functions.c Tue Jul 25 11:15:32 2006 @@ -1265,7 +1265,9 @@ /* the only special case when we should return -1 ourselves, * because inet_addr() considers it wrong. */ - if (!memcmp(Z_STRVAL_PP(str), "255.255.255.255", Z_STRLEN_PP(str))) { + if (!memcmp(Z_STRVAL_PP(str), "255.255.255.255", Z_STRLEN_PP(str)) || + !memcmp(Z_STRVAL_PP(str), "0xffffffff", Z_STRLEN_PP(str)) || + !memcmp(Z_STRVAL_PP(str), "0xFFFFFFFF", Z_STRLEN_PP(str)) ) { RETURN_LONG(-1); } ===================================================== here's a PHP 5.0.5 running with the patch: http://194.242.35.162/tstphp/t_ip2long.php and you can see now again same behaviour as with PHP 4.x: http://www.gknw.de/test/php_issues/t_ip2long.php patch for download here: http://www.gknw.net/test/php_issues/basic_functions.c.diff Guenter. ------------------------------------------------------------------------ [2006-07-25 07:04:40] [EMAIL PROTECTED] 0xffffffff is not an IP address and the underlying inet_addr() function doesn't think it's valid too. ------------------------------------------------------------------------ [2006-07-24 19:08:23] gk at gknw dot de Description: ------------ Although ip2long() works fine with 255.255.255.255 it fails when 0xffffffff is passed in. Other hex values work fine. Seems this was introduced with PHP 5.x - PHP 4.x is not affected; there it works as I expect. Reproduce code: --------------- Nonworking sample on PHP 5.x: http://www.gknw.net/test/php_issues/t_ip2long.php Working same sample on PHP 4.x: http://www.gknw.de/test/php_issues/t_ip2long.php Script for download: http://www.gknw.net/test/php_issues/t_ip2long_php.txt Expected result: ---------------- Same result on PHP5 as with PHP4. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=38197&edit=1