On Thu, Aug 03, 2023 at 07:55:54PM +0000, Qing Zhao wrote: > > > > On Aug 3, 2023, at 1:51 PM, Kees Cook <k...@kernel.org> wrote: > > > > On August 3, 2023 10:34:24 AM PDT, Qing Zhao <qing.z...@oracle.com> wrote: > >> One thing I need to point out first is, currently, even for regular fixed > >> size array in the structure, > >> We have this same issue, for example: > >> > >> #define LENGTH 10 > >> > >> struct fix { > >> size_t foo; > >> int array[LENGTH]; > >> }; > >> > >> … > >> int main () > >> { > >> struct fix *p; > >> p = alloc_buf_more (); > >> > >> expect(__builtin_object_size(p->array, 1), LENGTH * sizeof(int)); > >> expect(__builtin_object_size(p->array, 0), -1); > >> } > >> > >> Currently, for __builtin_object_size(p->array, 0), GCC return UNKNOWN for > >> it. > >> This is not a special issue for flexible array member. > > > > Is this true with -fstrict-flex-arrays=3 ? > > Yes.
Okay, right, I understand now -- it doesn't see the allocation, therefore max size is unknown. Sounds good. -Kees -- Kees Cook