]> dgit.raspbian.org Git - dovecot.git/commitdiff
[PATCH] lib: xxh64: fix byte ordering bug on big-endian systems
authorNoah Meyerhans <noahm@debian.org>
Wed, 2 Sep 2026 01:12:51 +0000 (21:12 -0400)
committerNoah Meyerhans <noahm@debian.org>
Wed, 16 Sep 2026 19:06:35 +0000 (15:06 -0400)
Convert from little-endian to host byte order where necessary.

Background at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1146449

Gbp-Pq: Name 0001-lib-xxh64-fix-byte-ordering-bug-on-big-endian-system.patch

src/lib/xxh64.c

index 1c17833afd439267348f5147ee7980bc84df6102..4a151bd0c27a0236a461107a1f21fd2782069666 100644 (file)
@@ -8,6 +8,8 @@
 #include "lib.h"
 #include "xxh64.h"
 
+#include <endian.h>
+
 #define XXH64_PRIME1  UINT64_C(0x9E3779B185EBCA87)
 #define XXH64_PRIME2  UINT64_C(0xC2B2AE3D27D4EB4F)
 #define XXH64_PRIME3  UINT64_C(0x165667B19E3779F9)
@@ -20,14 +22,14 @@ static inline uint64_t xxh64_read64(const void *p)
 {
        uint64_t v;
        memcpy(&v, p, sizeof(v));
-       return v;
+       return le64toh(v);  /* Convert from little-endian to host byte order */
 }
 
 static inline uint32_t xxh64_read32(const void *p)
 {
        uint32_t v;
        memcpy(&v, p, sizeof(v));
-       return v;
+       return le32toh(v);  /* Convert from little-endian to host byte order */
 }
 
 static uint64_t ATTR_UNSIGNED_WRAPS xxh64_round(uint64_t acc, uint64_t input)