Re: [PATCH] string.h: work around __builtin_constant_p quirk

From: Kees Cook
Date: Tue Aug 15 2017 - 15:07:18 EST


On Mon, Aug 7, 2017 at 3:29 PM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> On Mon, Aug 7, 2017 at 11:15 AM, Arnd Bergmann <arnd@xxxxxxxx> wrote:
>> The compile-time check in the hardened memcpy() triggered a build
>> error in code that should not have:
>>
>> In function 'memcpy',
>> inlined from '__adfs_dir_put' at fs/adfs/dir_f.c:318:2,
>> inlined from 'adfs_f_update' at fs/adfs/dir_f.c:403:2:
>> include/linux/string.h:305:4: error: call to '__read_overflow2' declared with attribute error: detected read beyond size of object passed as 2nd parameter
>> __read_overflow2();
>> ^~~~~~~~~~~~~~~~~~
>>
>> Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=72785
>> Fixes: mmotm ("fortify: use WARN instead of BUG for now")
>> Fixes: 6974f0c4555e ("include/linux/string.h: add the option of fortified string.h functions")
>> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>
>
> Please ignore this version for now, it seems that I accidentally
> disabled all the compile-time
> checks with the __builtin_choose_expr

Just double-checking on this patch. Last I saw you were testing a
tweak to not use __builtin_choose_expr()? I don't see it in -next so I
just wanted to see what was still needed here...

Thanks!

-Kees

--
Kees Cook
Pixel Security