]> git.ipfire.org Git - thirdparty/xtables-addons.git/commitdiff
geoip: simplify unpacking start/end tuples from database
authorPhilip Prindeville <philipp@redfish-solutions.com>
Sun, 19 Apr 2020 23:17:14 +0000 (01:17 +0200)
committerJan Engelhardt <jengelh@inai.de>
Tue, 21 Apr 2020 10:00:54 +0000 (12:00 +0200)
Use unpack() to separate start/end instead of substr().

Signed-off-by: Philip Prindeville <philipp@redfish-solutions.com>
geoip/xt_geoip_fetch

index 4a35760b77c9509347a3846f37eeb9574aeb9883..06245195fb5166ac005b5021fa0f811e5e511c78 100755 (executable)
@@ -53,8 +53,9 @@ foreach my $cc (@ARGV) {
                binmode($fh);
 
                while (($bytes = read($fh, $buffer, AF_INET_SIZE * 2)) == AF_INET_SIZE * 2) {
-                       my $start = inet_ntop(AF_INET, substr($buffer, 0, AF_INET_SIZE));
-                       my $end = inet_ntop(AF_INET, substr($buffer, AF_INET_SIZE));
+                       my ($start, $end) = unpack('a4a4', $buffer);
+                       $start = inet_ntop(AF_INET, $start);
+                       $end = inet_ntop(AF_INET, $end);
                        print $start, '-', $end, "\n";
                }
                close($fh);
@@ -75,8 +76,9 @@ foreach my $cc (@ARGV) {
                binmode($fh);
 
                while (($bytes = read($fh, $buffer, AF_INET6_SIZE * 2)) == AF_INET6_SIZE * 2) {
-                       my $start = inet_ntop(AF_INET6, substr($buffer, 0, AF_INET6_SIZE));
-                       my $end = inet_ntop(AF_INET6, substr($buffer, AF_INET6_SIZE));
+                       my ($start, $end) = unpack('a16a16', $buffer);
+                       $start = inet_ntop(AF_INET6, $start);
+                       $end = inet_ntop(AF_INET6, $end);
                        print $start, '-', $end, "\n";
                }
                close($fh);