xtables-addons: Fix generating GeoIP database

Perl seems to have a very funny feature where you cannot rely on
how it formats IP addresses into a binary string.

This seems to be 16 bytes long for IPv4 addresses when we (and the kernel)
only expect 4.

This patch changes this so that the last 12 bytes are just being dropped.

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
This commit is contained in:
Michael Tremer
2019-01-23 04:10:23 +00:00
parent f29ff21cd6
commit 480e301442
2 changed files with 20 additions and 0 deletions

View File

@@ -82,6 +82,8 @@ $(TARGET) : $(patsubst %,$(DIR_DL)/%,$(objects))
@$(PREBUILD)
@rm -rf $(DIR_APP) && cd $(DIR_SRC) && tar axf $(DIR_DL)/$(DL_FILE)
cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/xtables-addons-3.2-fix-database-generation.patch
# Only build the specified modules.
cp -avf $(DIR_SRC)/config/xtables-addons/mconfig \
$(DIR_APP)/mconfig

View File

@@ -0,0 +1,18 @@
diff --git a/geoip/xt_geoip_build b/geoip/xt_geoip_build
index 3b15875..7bc42f3 100755
--- a/geoip/xt_geoip_build
+++ b/geoip/xt_geoip_build
@@ -259,7 +259,12 @@ sub writeCountry
my ($start, $end) = split('-', $range);
$start = inet_pton($family, $start);
$end = inet_pton($family, $end);
- print $fh $start, $end;
+
+ if ($family == AF_INET) {
+ print $fh substr($start, 0, 4), substr($end, 0, 4);
+ } else {
+ print $fh $start, $end;
+ }
}
close $fh;
}