Subject: | Fix to let Net::IP deal with zero IPs or networks based off of it |
Please find attached a fix by Tom Rutledge to let Net::IP deal with zero
IPs or networks based off of it, e.g. 0.0.0.0/0.
Subject: | 0001-Fix-by-Tom-Rutledge-to-let-Net-IP-deal-with-zero-IPs.patch |
From 0f5c1560eb11f0913895c3ac24d1f92d6133f96c Mon Sep 17 00:00:00 2001
From: mschilli <github@perlmeister.com>
Date: Tue, 17 Aug 2010 14:11:20 -0700
Subject: [PATCH] Fix by Tom Rutledge to let Net::IP deal with zero IPs or networks based
off of it, e.g. 0.0.0.0/0.
---
IP.pm | 16 +++++++++++-----
1 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/IP.pm b/IP.pm
index eec2023..2d17453 100644
--- a/IP.pm
+++ b/IP.pm
@@ -410,7 +410,9 @@ sub intip {
my $int = ip_bintoint($self->binip());
- if (!$int) {
+ # this then fails for 0.0.0.0 , which is wrong.
+ #
+ if (not defined $int) {
$self->{error} = $ERROR;
$self->{errno} = $ERRNO;
return;
@@ -619,9 +621,11 @@ sub last_int {
return ($self->{last_int}) if defined($self->{last_int});
- my $last_bin = $self->last_bin() or return;
+ my $last_bin = $self->last_bin();
+ return unless defined $last_bin;
- my $last_int = ip_bintoint($last_bin, $self->version()) or return;
+ my $last_int = ip_bintoint($last_bin, $self->version());
+ return unless defined $last_int;
$self->{last_int} = $last_int;
@@ -1235,11 +1239,13 @@ sub ip_prefix_to_range {
# Turn into a binary
# Get last address
# Turn into an IP
- my $binip = ip_iptobin($ip, $ip_version) or return;
+ my $binip = ip_iptobin($ip, $ip_version) ;
+ return unless defined $binip;
return unless (ip_check_prefix($binip, $len, $ip_version));
- my $lastip = ip_last_address_bin($binip, $len, $ip_version) or return;
+ my $lastip = ip_last_address_bin($binip, $len, $ip_version);
+ return unless defined $lastip;
return unless ($lastip = ip_bintoip($lastip, $ip_version));
return ($ip, $lastip);
--
1.7.0.4