pkg-perl-maintainers team mailing list archive
-
pkg-perl-maintainers team
-
Mailing list archive
-
Message #05050
[Bug 2083236] Re: [SRU] Net::IP->intip return undef for IP 0.0.0.0 instead of 0
** Description changed:
+ [ Impact ]
+
+ * This perl module doesn't calculate correctly the equivalent integer value for
+ an IP of only zeros (0.0.0.0).
+
+ * This leads to unpredictable error-prone behavior in the pieces of code that
+ use it because an uninitialised value is not expected as a result of the
+ intip conversion.
+
+ [ Test Plan ]
+
+ Using the script attached in comment #4 we could see the bad case and
+ validate the good one.
+
+ #0 Preparation in a container (e.g., Focal)
+ #0.0 Enabling container
+ lxc launch ubuntu-daily:focal Flibnet-ip-perl
+ lxc shell Jpostfix
+ apt update && apt Flibnet-ip-perl
+ #0.1 Getting test script and install requirements packages to be executed:
+ apt install libnet-ip-perl libdata-dumper-concise-perl
+ wget https://bugs.launchpad.net/ubuntu/+source/libnet-ip-perl/+bug/2083236/+attachment/5827083/+files/ip_intip_method.pl
+
+
+ #1 Execution
+ perl ip_intip_method.pl 0.0.0.0
+
+ ### Bad case
+ # Note the error message and the errno and error
+
+ root@Flibnet-ip-perl:~# perl ip_intip_method.pl 0.0.0.0
+ Use of uninitialized value in concatenation (.) or string at ip_intip_method.pl line 15.
+ "IP : 0.0.0.0"
+ "Int : "
+
+ bless( {
+ binip => "00000000000000000000000000000000",
+ binmask => "11111111111111111111111111111111",
+ errno => undef,
+ error => undef,
+ ip => "0.0.0.0",
+ ipversion => 4,
+ is_prefix => 1,
+ last_bin => "00000000000000000000000000000000",
+ last_ip => "0.0.0.0",
+ prefixlen => 32,
+ }, 'Net::IP' )
+
+ ### Good case (after upgrading package from proposed following [1])
+ # Note that error message disappears and it return an Math::BigInt object (intformat with value of 0)
+
+ root@Flibnet-ip-perl:~# perl ip_intip_method.pl 0.0.0.0
+ "IP : 0.0.0.0"
+ "Int : 0"
+
+ bless( {
+ binip => "00000000000000000000000000000000",
+ binmask => "11111111111111111111111111111111",
+ intformat => bless( {
+ sign => "+",
+ value => bless( [
+ 0,
+ ], 'Math::BigInt::Calc' ),
+ }, 'Math::BigInt' ),
+ ip => "0.0.0.0",
+ ipversion => 4,
+ is_prefix => 1,
+ last_bin => "00000000000000000000000000000000",
+ last_ip => "0.0.0.0",
+ prefixlen => 32,
+ }, 'Net::IP' )
+
+
+ [1] https://wiki.ubuntu.com/Testing/EnableProposed
+
+ [ Where problems could occur ]
+
+ The change affects only operations that involve the necessity of having the
+ IP as an integer, so there shouldn't be regressions for other computations.
+
+ Nevertheless, programmers who didn't notice this undefined value could see
+ differences when executing ad-hoc code that uses this perl module. If they were
+ conscious of it but put remedies in place (with exceptions u other
+ mechanisms), they wouldn't notice the change, but that code will no longer
+ needed.
+
+ [ Other Info ]
+
+ The fix has been incorporated in Debian as per comment #5 (thanks
+ Gregor!)
+
+ [Original Report]
+ --------------------------------------------------------------------------------
+
This issue is related to CPAN RT#60439
(https://rt.cpan.org/Public/Bug/Display.html?id=60439) which was closed
but never integrated to the lib code.
--
You received this bug notification because you are a member of Debian
Perl Group, which is subscribed to libnet-ip-perl in Ubuntu.
https://bugs.launchpad.net/bugs/2083236
Title:
[SRU] Net::IP->intip return undef for IP 0.0.0.0 instead of 0
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libnet-ip-perl/+bug/2083236/+subscriptions
References