[master] 593632401 miniobj.h: Fix ALLOC_FLEX_OBJ
Nils Goroll
nils.goroll at uplex.de
Mon Feb 10 19:03:05 UTC 2025
commit 593632401763f463e7d611cc6cc916ccf6208cc4
Author: Nils Goroll <nils.goroll at uplex.de>
Date: Mon Feb 10 19:57:03 2025 +0100
miniobj.h: Fix ALLOC_FLEX_OBJ
use of sizeof(base) is actually wrong because of padding.
See https://gustedt.wordpress.com/2011/03/14/flexible-array-member/
diff --git a/include/miniobj.h b/include/miniobj.h
index 8cb9e293e..ecb341f49 100644
--- a/include/miniobj.h
+++ b/include/miniobj.h
@@ -38,7 +38,12 @@
} while (0)
#define ALLOC_FLEX_OBJ(to, fld, len, type_magic) \
- ALLOC_OBJ_EXTRA(to, (len) * sizeof *((to)->fld), (type_magic))
+ do { \
+ (to) = calloc(1, offsetof(typeof(*to), fld) + \
+ sizeof *(to)->fld * len); \
+ if ((to) != NULL) \
+ (to)->magic = (type_magic); \
+ } while (0)
#define FREE_OBJ(to) \
do { \
More information about the varnish-commit
mailing list