PEAR is discontinued

This is a static archive preserving historical releases and metadata. No new packages or updates will be published. For updates to existing packages, or to publish new packages, please use Composer and Packagist.

Home » Networking » Net_IPv4 » Bug #5112

ipInNetwork() returns not only boolean

Details

Submitted2005-08-16 20:18 UTC
Frompear_dot_php_dot_net at edelhost dot de
Assignedbate
StatusClosed
PackageNet_IPv4
PHP VersionIrrelevant
OSGNU/Linux 2.6.12
Roadmaps(Not assigned)

Comments

[2005-08-16 20:18 UTC] pear_dot_php_dot_net at edelhost dot de

Description:
------------
The Method ipInNetwork() returns to mutch:
* return($network); // Line 376
* return(TRUE); // Line 383
* return(FALSE); // Line 385
* return((double)(sprintf("%u", ip2long($ip))));//Line 386
In Net_IPv4-1.2 it will never return true, because the if construct on line returns allways $network.

Test script:
---------------
Test scripts see: http://kopfkrebs.de/node/496

The following patch will fix this problem:

--- Net/IPv4.php 2005-08-16 21:43:56.000000000 +0200
+++ Net/IPv4.php.new 2005-08-16 21:41:02.000000000 +0200
@@ -372,18 +372,14 @@
if (! is_object($network) || get_class($network) != 'net_ipv4') {
$network = Net_IPv4::parseAddress($network);
}
- if (! is_object($network) || get_class($network) != 'net_ipv4') {
- return($network);
- }
- $net = Net_IPv4::ip2double($network->network);
+ $net = Net_IPv4::ip2double($network->network);
$bcast = Net_IPv4::ip2double($network->broadcast);
- $ip = Net_IPv4::ip2double($ip);
+ $ip = Net_IPv4::ip2double($ip);
unset($network);
if ($ip >= $net && $ip <= $bcast) {
- return(TRUE);
+ return true;
}
- return(FALSE);
- return((double)(sprintf("%u", ip2long($ip))));
+ return false;
}
}

Expected result:
----------------
For example:
IPv4-Address 10.11.12.13 is:
NOT in network: 127.0.0.1/8
in network: 10.0.0.1/8
NOT in network: 172.16.0.1/12
NOT in network: 192.168.0.1/16

Actual result:
--------------
IPv4-Address 10.11.12.13 is:
in network: 127.0.0.1/8
in network: 10.0.0.1/8
in network: 172.16.0.1/12
in network: 192.168.0.1/16