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

Reply via email to