From b362b0898e33591c168baa6916c074fed2d4ae27 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Tue, 12 May 2026 17:30:07 +0200 Subject: [PATCH] buzhash chunkers: add len==0 check to avoid buffer over-read Isn't called by the higher level code with len==0, but adding the check nevertheless for cleaner and less suspicious code. --- src/borg/chunkers/buzhash.pyx | 2 ++ src/borg/chunkers/buzhash64.pyx | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/borg/chunkers/buzhash.pyx b/src/borg/chunkers/buzhash.pyx index 7c1b6872a..8a30594bc 100644 --- a/src/borg/chunkers/buzhash.pyx +++ b/src/borg/chunkers/buzhash.pyx @@ -101,6 +101,8 @@ cdef uint32_t _buzhash(const unsigned char* data, size_t len, const uint32_t* h) """Calculate the buzhash of the given data.""" cdef uint32_t i cdef uint32_t sum = 0, imod + if len == 0: + return 0 for i in range(len - 1, 0, -1): imod = i & 0x1f sum ^= BARREL_SHIFT(h[data[0]], imod) diff --git a/src/borg/chunkers/buzhash64.pyx b/src/borg/chunkers/buzhash64.pyx index bbe41cd96..a3c7bf110 100644 --- a/src/borg/chunkers/buzhash64.pyx +++ b/src/borg/chunkers/buzhash64.pyx @@ -78,6 +78,8 @@ cdef uint64_t _buzhash64(const unsigned char* data, size_t len, const uint64_t* """Calculate the buzhash of the given data.""" cdef uint64_t i cdef uint64_t sum = 0, imod + if len == 0: + return 0 for i in range(len - 1, 0, -1): imod = i & 0x3f sum ^= BARREL_SHIFT64(h[data[0]], imod)