From 82fdffc5ec0ecffc2e49128775d7c09ed43ba59d Mon Sep 17 00:00:00 2001 From: Alan Wu Date: Sun, 12 Apr 2020 15:19:06 -0400 Subject: Avoid UB with flexible array member Accessing past the end of an array is technically UB. Use C99 flexible array member instead to avoid the UB and simplify allocation size calculation. See also: DCL38-C in the SEI CERT C Coding Standard --- vm_callinfo.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'vm_callinfo.h') diff --git a/vm_callinfo.h b/vm_callinfo.h index 013811d15e..b3de14dcab 100644 --- a/vm_callinfo.h +++ b/vm_callinfo.h @@ -33,14 +33,14 @@ enum vm_call_flag_bits { struct rb_callinfo_kwarg { int keyword_len; - VALUE keywords[1]; + VALUE keywords[]; }; static inline size_t rb_callinfo_kwarg_bytes(int keyword_len) { return rb_size_mul_add_or_raise( - keyword_len - 1, + keyword_len, sizeof(VALUE), sizeof(struct rb_callinfo_kwarg), rb_eRuntimeError); -- cgit v1.2.3