php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #17202 long2ip problems with unsigned double
Submitted: 2002-05-14 07:13 UTC Modified: 2002-07-01 15:38 UTC
From: pl at dlh dot net Assigned:
Status: Not a bug Package: Network related
PHP Version: 4.2.0 OS: Debian 3.0 / Kernel 2.4.18
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: pl at dlh dot net
New email:
PHP Version: OS:

 

 [2002-05-14 07:13 UTC] pl at dlh dot net
When storing ips as unsigned doubles I noticed a strange behaviour when passing unsigned doubles through the long2ip routine.

-- sample --

<?php

$ip = ip2long("192.168.0.1");

print long2ip($ip)."\n";

if ($ip < 0) $ip+=pow(2,32);  //convert from signed to unsigned

print long2ip($ip)."\n";

?>

-- end ---

In the first line - as supposed - the script returns "192.168.0.1", but after conversion I get an offset by one and it returns "192.168.0.0". I read in the doc that long2ip is capable of handling both signed and unsigned long integers.

Peter

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-07-01 15:36 UTC] sander@php.net
PHP has no unsigned numbers, so $ip+=pow(2,32); will mess up (goes beyond the limits of PHP's INT). Not a bug.
 [2002-07-01 15:38 UTC] derick@php.net
Your test script prints this for me with PHP 4.3.0-dev too:

192.168.0.1
192.168.0.1
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Sep 19 15:01:27 2024 UTC