From 7d025debfadc82391a5f3e7228c24cef6f199981 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 12 Jul 2019 09:06:28 +0200 Subject: [PATCH] alloc-util: drop _alloc_(2, 3) decorator from memdup_suffix0_multiply() This decorator tells compilers that the memory we return is shorter than it actually is, thus triggering misleading bad memory access complaints. Fixes: #13026 --- src/basic/alloc-util.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h index 9b20be4773..cffc737d03 100644 --- a/src/basic/alloc-util.h +++ b/src/basic/alloc-util.h @@ -112,7 +112,9 @@ _alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t size, si return memdup(p, size * need); } -_alloc_(2, 3) static inline void *memdup_suffix0_multiply(const void *p, size_t size, size_t need) { +/* Note that we can't decorate this function with _alloc_() since the returned memory area is one byte larger + * than the product of its parameters. */ +static inline void *memdup_suffix0_multiply(const void *p, size_t size, size_t need) { if (size_multiply_overflow(size, need)) return NULL; -- 2.25.1