PEAR is archived and read-only

This mirror preserves historical PEAR package releases and metadata so existing references remain available.

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