Re: [PATCH] KEYS: trusted: fix -Wvarags warning
From: Nick Desaulniers <ndesaulniers@google.com>
Date: 2018-10-12 17:18:04
Also in:
keyrings, linux-integrity, lkml
On Fri, Oct 12, 2018 at 10:05 AM Nick Desaulniers [off-list ref] wrote:
On Fri, Oct 12, 2018 at 8:14 AM Denis Kenzior [off-list ref] wrote:quoted
Hi James,quoted
quoted
So can't we simply use 'bool' or uint32 as the type for h3 instead of re-ordering everythingThe problem is the standard is ambiguious. The only thing that's guaranteed to work for all time is a char *. If you want to keep the order, what I'd suggest is inserting a dummy pointer argument which is always expected to be NULL between the h3 and the varargs.So maybe I'm misunderstanding something, but the issue seems to be that unsigned char is promoted to 'unsigned char *' by Clang and probably unsigned int or int by gcc.No. This is extremely well defined behavior in C. In C, integral types are NEVER promoted to pointer to integer types, only to larger integral types through rules more complicated than the correct flags to pass to `tar`. https://xkcd.com/1168/
And may have their signedness converted. https://wiki.sei.cmu.edu/confluence/display/c/INT02-C.+Understand+integer+conversion+rules is the reference I use, though I always feel like there's quite a bit of mental gymnastics involved interpreting it.
quoted
So instead of having unsigned char h3, can't we simply have bool h3 or unsigned int h3?int is the default argument promotion. Proposed: https://github.com/ClangBuiltLinux/linux/issues/41#issuecomment-428365339quoted
Regards, -Denis-- Thanks, ~Nick Desaulniers
-- Thanks, ~Nick Desaulniers