From: Michael Tremer Date: Mon, 10 Mar 2025 15:13:07 +0000 (+0000) Subject: address: Fix endianess problem when fetching octets in IPv4 addresses X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=afc5330f56d74b4a9142b800d994d623d7cd29e8;p=people%2Fms%2Flibloc.git address: Fix endianess problem when fetching octets in IPv4 addresses Fixes: #13828 Signed-off-by: Michael Tremer --- diff --git a/src/libloc/address.h b/src/libloc/address.h index ff6e943..e85d761 100644 --- a/src/libloc/address.h +++ b/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)