On Sat, Mar 10, 2018 at 7:33 AM, Kees Cook <keesc...@chromium.org> wrote:
> Alright, I'm giving up on fixing max(). I'll go back to STACK_MAX() or
> some other name for the simple macro. Bleh.
Oh, and I'm starting to see the real problem.
It's not that our current "min/max()" are broiken. It's that "-Wvla" is garbage.
results in gcc saying
warning: ISO C90 forbids variable length array ‘array’ [-Wvla]
and that error message - and the name of the flag - is obviously pure garbage.
What is *actually* going on is that ISO C90 requires an array size to
be not a constant value, but a constant *expression*. Those are two
A constant expression has little to do with "compile-time constant".
It's a more restricted form of it, and has actual syntax requirements.
A comma expression is not a constant expression, for example, which
was why I tested this.
So "-Wvla" is garbage, with a misleading name, and a misleading
warning string. It has nothing to do with "variable length" and
whether the compiler can figure it out at build time, and everything
to do with a _syntax_ rule.