Re: [PATCH next 2/3] fortify: Optimise strnlen()

From: Kees Cook

Date: Tue Mar 31 2026 - 02:37:01 EST


On Mon, Mar 30, 2026 at 02:20:02PM +0100, david.laight.linux@xxxxxxxxx wrote:
> From: David Laight <david.laight.linux@xxxxxxxxx>
>
> If the string is constant there is no need to call __real_strlen()
> even when maxlen is a variable - just return the smaller value.
>
> If the size of the string variable is unknown fortify_panic() can't be
> called, change the condition so that the compiler can optimise it away.
>
> Change __compiletime_strlen(p) to return a 'non-constant' value
> for non-constant strings (the same as __builtin_strlen()).
> Simplify since it is only necessary to check that the size is constant
> and that the last character is '\0'.
> Explain why it is different from __builtin_strlen().
> Update the kunit tests to match.

See also
commit d07c0acb4f41 ("fortify: Fix __compiletime_strlen() under UBSAN_BOUNDS_LOCAL")

-Kees

--
Kees Cook