diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2022-11-04 14:46:45 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2022-11-04 14:46:45 -0700 |
commit | bd745027438a854e2d7c124032e9ad4aa389e153 (patch) | |
tree | b7afc99c4d9baca60beaae2f49b892154b4044dd | |
parent | 1caa2f182afb59de9d6d5ba64b340df011a0b653 (diff) | |
parent | 6f7630b1b5bc672b54c1285ee6aba752b446672c (diff) | |
download | linux-bd745027438a854e2d7c124032e9ad4aa389e153.tar.bz2 |
Merge tag 'hardening-v6.1-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux
Pull hardening fix from Kees Cook:
- Correctly report struct member size on memcpy overflow (Kees Cook)
* tag 'hardening-v6.1-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
fortify: Capture __bos() results in const temp vars
-rw-r--r-- | include/linux/fortify-string.h | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/include/linux/fortify-string.h b/include/linux/fortify-string.h index 18a31b125f9d..1067a8450826 100644 --- a/include/linux/fortify-string.h +++ b/include/linux/fortify-string.h @@ -454,13 +454,18 @@ __FORTIFY_INLINE bool fortify_memcpy_chk(__kernel_size_t size, #define __fortify_memcpy_chk(p, q, size, p_size, q_size, \ p_size_field, q_size_field, op) ({ \ - size_t __fortify_size = (size_t)(size); \ - WARN_ONCE(fortify_memcpy_chk(__fortify_size, p_size, q_size, \ - p_size_field, q_size_field, #op), \ + const size_t __fortify_size = (size_t)(size); \ + const size_t __p_size = (p_size); \ + const size_t __q_size = (q_size); \ + const size_t __p_size_field = (p_size_field); \ + const size_t __q_size_field = (q_size_field); \ + WARN_ONCE(fortify_memcpy_chk(__fortify_size, __p_size, \ + __q_size, __p_size_field, \ + __q_size_field, #op), \ #op ": detected field-spanning write (size %zu) of single %s (size %zu)\n", \ __fortify_size, \ "field \"" #p "\" at " __FILE__ ":" __stringify(__LINE__), \ - p_size_field); \ + __p_size_field); \ __underlying_##op(p, q, __fortify_size); \ }) |