]> git.ipfire.org Git - location/debian/libloc.git/commitdiff
address: Fix endianess problem when fetching octets in IPv4 addresses
authorValters Jansons <valter.jansons@gmail.com>
Wed, 26 Mar 2025 05:44:24 +0000 (05:44 +0000)
committerHans-Christoph Steiner <eighthave@debian.org>
Wed, 26 Mar 2025 05:44:24 +0000 (05:44 +0000)
debian/patches/0001-address-Fix-endianess-problem.patch [new file with mode: 0644]
debian/patches/series [new file with mode: 0644]

diff --git a/debian/patches/0001-address-Fix-endianess-problem.patch b/debian/patches/0001-address-Fix-endianess-problem.patch
new file mode 100644 (file)
index 0000000..2cbb0dc
--- /dev/null
@@ -0,0 +1,29 @@
+Subject: address: Fix endianess problem when fetching octets in IPv4 addresses
+Origin: upstream, https://git.ipfire.org/?p=location/libloc.git;a=commit;h=afc5330f56d74b4a9142b800d994d623d7cd29e8
+Forwarded: not-needed
+Author: Michael Tremer <michael.tremer@ipfire.org>
+Last-Update: 2025-03-10
+Applied-Upstream: commit:afc5330f56d74b4a9142b800d994d623d7cd29e8
+
+The packaged 0.9.18 fails tests for s390x, as 10.0.0.0/32 becomes
+an 10.0.0.0.in-addr.arpa., instead of expected 0.0.0.10.in-addr.arpa.
+
+---
+
+diff --git a/src/libloc/address.h b/src/libloc/address.h
+index ff6e943..e85d761 100644
+--- libloc-0.9.18.orig/src/libloc/address.h
++++ libloc-0.9.18/src/libloc/address.h
+@@ -324,7 +324,11 @@ static inline int loc_address_get_octet(const struct in6_addr* address, const un
+               if (i >= 4)
+                       return -ERANGE;
+-              return (address->s6_addr32[3] >> (i * 8)) & 0xff;
++              // Format the IPv4 in host-byte order
++              unsigned int a4 = be32toh(address->s6_addr32[3]);
++
++              // Return the nth byte from the left
++              return a4 >> ((3 - i) * 8) & 0xff;
+       } else {
+               if (i >= 32)
diff --git a/debian/patches/series b/debian/patches/series
new file mode 100644 (file)
index 0000000..218851b
--- /dev/null
@@ -0,0 +1 @@
+0001-address-Fix-endianess-problem.patch