#8217 [Opn->Csd]: long2ip gives 127.255.255.255 result instead of correct value
| From: | moriyoshi@php.net | Date: | Sat, 18 Jan 2003 16:27:05 +0000 |
| Subject: | #8217 [Opn->Csd]: long2ip gives 127.255.255.255 result instead of correct value | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-30475@lists.php.net to get a copy of this message | ||
ID: 8217
Updated by: moriyoshi@php.net
Reported By: christoph@lameter.com
-Status: Open
+Status: Closed
Bug Type: Feature/Change Request
Operating System: Linux
PHP Version: 4.0.3pl1
New Comment:
Thank you for your bug report. This issue has already been fixed
in the latest released version of PHP, which you can download at
http://www.php.net/downloads.php
Previous Comments:
------------------------------------------------------------------------
[2000-12-13 06:35:01] stas@php.net
Numbers you brought are not valid PHP longs, they don't fit
signed long. So they don't give good result in long2ip. It
might be done with a special hack, but it's not a bug - it's
a lacking feature.
------------------------------------------------------------------------
[2000-12-12 18:43:49] christoph@lameter.com
Feed the following list to this script and you will see how long2ip
screws up. There is an overflow condition it seems:
178519801
1061963075
1070665698
1070668067
2180645450
2180645574
2180645666
2180645722
2180647266
2180648705
2180649062
2180652350
2180676205
2301042637
2554268534
2554278550
2554279006
3232238083
3232238334
3435825182
3435825736
3475085569
3506496261
3508072161
3522432302
3528459286
3528470646
3528471070
<?php
function lng2ip($ip) {
settype($ip,"double");
return floor($ip/(256*256*256)) . "." . floor($ip/(256*256))%256 .
"." . floor($ip/256)%256 . "." .
}
$fh=fopen("xx","r");
while ($x=fgets($fh,100)) {
$x=rtrim ($x);
echo "$x ".long2ip($x)." ".lng2ip($x)."\n";
}
?>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=8217&edit=1