Re: Likely undefined behavior with some flexible arrays - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Likely undefined behavior with some flexible arrays
Date
Msg-id 2432554.1769033224@sss.pgh.pa.us
Whole thread Raw
In response to Likely undefined behavior with some flexible arrays  (Andres Freund <andres@anarazel.de>)
Responses Re: Likely undefined behavior with some flexible arrays
List pgsql-hackers
Andres Freund <andres@anarazel.de> writes:
> I got a - I thought - spurious warning in a development patch. A simplified
> reproducer of the warning is [1], which triggers:

> <source>: In function 'trigger_warning':
> <source>:19:9: warning: array subscript 'struct foo[0]' is partly outside array bounds of 'unsigned char[13]'
[-Warray-bounds=]
>    19 |     foop->len = len;
>       |         ^~
> <source>:18:12: note: object of size 13 allocated by 'allocme'
>    18 |     foop = allocme(offsetof(struct foo, data) + sizeof(char) * len);
>       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> Compiler returned: 0

Considering that palloc() is going to round up the request to a
maxalign boundary, I think the chances of actual trouble are
precisely zero.  However, if we start getting such warnings on
common compilers, maybe the way to fix it is to put the maxaligns
into the calls?

            regards, tom lane



pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Likely undefined behavior with some flexible arrays
Next
From: Sami Imseih
Date:
Subject: Re: POC: Parallel processing of indexes in autovacuum