summaryrefslogtreecommitdiff
path: root/src/basic/alloc-util.h
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-07-12 09:06:28 +0200
committerLennart Poettering <lennart@poettering.net>2019-07-12 09:11:40 +0200
commit7d025debfadc82391a5f3e7228c24cef6f199981 (patch)
tree7d26f46451eb17b41e356f7243ecb94c2fb33552 /src/basic/alloc-util.h
parent27dd6e1b1204fbea507f50e9aadde1c5b5f0ac18 (diff)
downloadsystemd-7d025debfadc82391a5f3e7228c24cef6f199981.tar.gz
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
Diffstat (limited to 'src/basic/alloc-util.h')
-rw-r--r--src/basic/alloc-util.h4
1 files changed, 3 insertions, 1 deletions
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;