Pull FORTIFY_SOURCE updates from Kees Cook: "This series consists of two halves: - strict compile-time buffer size checking under FORTIFY_SOURCE for the memcpy()-family of functions (for extensive details and rationale, see the first commit) - enabling FORTIFY_SOURCE for Clang, which has had many overlapping bugs that we've finally worked past" * tag 'memcpy-v5.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux: fortify: Add Clang support fortify: Make sure strlen() may still be used as a constant expression fortify: Use __diagnose_as() for better diagnostic coverage fortify: Make pointer arguments const Compiler Attributes: Add __diagnose_as for Clang Compiler Attributes: Add __overloadable for Clang Compiler Attributes: Add __pass_object_size for Clang fortify: Replace open-coded __gnu_inline attribute fortify: Update compile-time tests for Clang 14 fortify: Detect struct member overflows in memset() at compile-time fortify: Detect struct member overflows in memmove() at compile-time fortify: Detect struct member overflows in memcpy() at compile-time
Showing the changes to scripts (1 of 13 files). Show all
Unified · Split
| @@ -46,8 +46,12 @@ if "$@" -Werror -c "$IN" -o "$OUT".o 2> "$TMP" ; then · 45 unmodified lines | |||
| 46 | status="warning: unsafe ${FUNC}() usage lacked '$WANT' symbol in $IN" | 46 | status="warning: unsafe ${FUNC}() usage lacked '$WANT' symbol in $IN" |
| 47 | fi | 47 | fi |
| 48 | else | 48 | else |
| 49 | # If the build failed, check for the warning in the stderr (gcc). | 49 | # If the build failed, check for the warning in the stderr. |
| 50 | if ! grep -q -m1 "error: call to .\b${WANT}\b." "$TMP" ; then | 50 | # GCC: |
| 51 | # ./include/linux/fortify-string.h:316:25: error: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror=attribute-warning] | ||
| 52 | # Clang 14: | ||
| 53 | # ./include/linux/fortify-string.h:316:4: error: call to __write_overflow_field declared with 'warning' attribute: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Werror,-Wattribute-warning] | ||
| 54 | if ! grep -Eq -m1 "error: call to .?\b${WANT}\b.?" "$TMP" ; then | ||
| 51 | status="warning: unsafe ${FUNC}() usage lacked '$WANT' warning in $IN" | 55 | status="warning: unsafe ${FUNC}() usage lacked '$WANT' warning in $IN" |
| 52 | fi | 56 | fi |
| 53 | fi | 57 | fi |