From: Lennart Poettering Date: Fri, 12 Jul 2019 07:06:28 +0000 (+0200) Subject: alloc-util: drop _alloc_(2, 3) decorator from memdup_suffix0_multiply() X-Git-Tag: v243-rc1~140^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7d025debfadc82391a5f3e7228c24cef6f199981;p=thirdparty%2Fsystemd.git 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 --- diff --git a/src/basic/alloc-util.h b/src/basic/alloc-util.h index 9b20be4773e..cffc737d03a 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;