tech-toolchain archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: Make __CTASSERT1 true static assert

On 19.09.2019 13:50, Martin Husemann wrote:
> On Thu, Sep 19, 2019 at 01:41:42PM +0200, Kamil Rytarowski wrote:
>> Our version of _CTASSERT does not work as static assert.
> I am not sure what you mean here.

Our _CTASSERT is broken as it is not constant-time expression. We define
VLA which size can be in runtime -1 and trigger UB. Worse than UB is
that it does not validate whether the expression is valid.

>> #include <sys/cdefs.h>
>> int main(int argc, char **argv) { __CTASSERT(argc < 0); return 0; }
> I think this is an abuse of __CTASSERT and should not be supported.

My patch proposal fixes this.

> Martin

Attachment: signature.asc
Description: OpenPGP digital signature

Home | Main Index | Thread Index | Old Index