Re: [PATCH v5 0/2] Remove false-positive VLAs when using max()

From: Linus Torvalds
Date: Thu Mar 22 2018 - 13:04:27 EST


On Thu, Mar 22, 2018 at 8:01 AM, Kees Cook <keescook@xxxxxxxxxxxx> wrote:
>
> Seems like it doesn't like void * arguments:

Yeah, that was discussed separately, I just didn't realize we had any
such users.

As David said, just adding a (long) cast to it should be fine, ie

#define __is_constant(a) \
(sizeof(int) == sizeof(*(1 ? ((void*)((long)(a) * 0l)) : (int*)1)))

and is probably a good idea even outside of pointers (because "long
long" constants could cause warnings too due to the cast to (void *)).

Linus