On Sun, Aug 22, 2021 at 12:57 AM Kees Cook <keescook@xxxxxxxxxxxx> wrote: > > The implementation for intra-object overflow in str*-family functions > accidentally dropped compile-time write overflow checking in strcpy(), > leaving it entirely to run-time. Add back the intended check. > > Fixes: 6a39e62abbaf ("lib: string.h: detect intra-object overflow in fortified string functions") > Cc: Daniel Axtens <dja@xxxxxxxxxx> > Cc: Francis Laniel <laniel_francis@xxxxxxxxxxxxxxxxxxx> > Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > --- > include/linux/fortify-string.h | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h > index 7e67d02764db..68bc5978d916 100644 > --- a/include/linux/fortify-string.h > +++ b/include/linux/fortify-string.h > @@ -287,7 +287,10 @@ __FORTIFY_INLINE char *strcpy(char *p, const char *q) > if (p_size == (size_t)-1 && q_size == (size_t)-1) > return __underlying_strcpy(p, q); > size = strlen(q) + 1; > - /* test here to use the more stringent object size */ > + /* Compile-time check for const size overflow. */ > + if (__builtin_constant_p(size) && p_size < size) > + __write_overflow(); > + /* Run-time check for dynamic size overflow. */ > if (p_size < size) > fortify_panic(__func__); > memcpy(p, q, size); > -- > 2.30.2 > > -- > You received this message because you are subscribed to the Google Groups "Clang Built Linux" group. > To unsubscribe from this group and stop receiving emails from it, send an email to clang-built-linux+unsubscribe@xxxxxxxxxxxxxxxx. > To view this discussion on the web visit https://groups.google.com/d/msgid/clang-built-linux/20210822075122.864511-18-keescook%40chromium.org. -- Thanks, ~Nick Desaulniers