]> git.ipfire.org Git - people/ms/linux.git/commit
fortify: Make sure strlen() may still be used as a constant expression
authorKees Cook <keescook@chromium.org>
Tue, 8 Feb 2022 22:53:49 +0000 (14:53 -0800)
committerKees Cook <keescook@chromium.org>
Mon, 14 Feb 2022 00:50:07 +0000 (16:50 -0800)
commit67ebc3ab446230c77fe3b545a9d8a11cac1cfb6e
tree712643fdda5c0f50442eb4d9238daaa2035be71f
parent92df138a8d663cefebc3124041253677a53c92cf
fortify: Make sure strlen() may still be used as a constant expression

In preparation for enabling Clang FORTIFY_SOURCE support, redefine
strlen() as a macro that tests for being a constant expression
so that strlen() can still be used in static initializers, which is
lost when adding __pass_object_size and __overloadable.

An example of this usage can be seen here:
https://lore.kernel.org/all/202201252321.dRmWZ8wW-lkp@intel.com/

Notably, this constant expression feature of strlen() is not available
for architectures that build with -ffreestanding. This means the kernel
currently does not universally expect strlen() to be used this way, but
since there _are_ some build configurations that depend on it, retain
the characteristic for Clang FORTIFY_SOURCE builds too.

Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://lore.kernel.org/r/20220208225350.1331628-8-keescook@chromium.org
include/linux/fortify-string.h