• Kees Cook's avatar
    wifi: brcmfmac: p2p: Introduce generic flexible array frame member · 1a30a6b2
    Kees Cook authored
    Silence run-time memcpy() false positive warning when processing
    management frames:
    
      memcpy: detected field-spanning write (size 27) of single field "&mgmt_frame->u" at drivers/net/wireless/broadcom/brcm80211/brcmfmac/p2p.c:1469 (size 26)
    
    Due to this (soon to be fixed) GCC bug[1], FORTIFY_SOURCE (via
    __builtin_dynamic_object_size) doesn't recognize that the union may end
    with a flexible array, and returns "26" (the fixed size of the union),
    rather than the remaining size of the allocation. Add an explicit
    flexible array member and set it as the destination here, so that we
    get the correct coverage for the memcpy().
    
    [1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101832Reported-by: default avatarArd Biesheuvel <ardb@kernel.org>
    Cc: Arend van Spriel <aspriel@gmail.com>
    Cc: Franky Lin <franky.lin@broadcom.com>
    Cc: Hante Meuleman <hante.meuleman@broadcom.com>
    Cc: Kalle Valo <kvalo@kernel.org>
    Cc: "David S. Miller" <davem@davemloft.net>
    Cc: Eric Dumazet <edumazet@google.com>
    Cc: Jakub Kicinski <kuba@kernel.org>
    Cc: Paolo Abeni <pabeni@redhat.com>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: "Jason A. Donenfeld" <Jason@zx2c4.com>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: "Darrick J. Wong" <djwong@kernel.org>
    Cc: Colin Ian King <colin.i.king@gmail.com>
    Cc: Brian Henriquez <brian.henriquez@cypress.com>
    Cc: linux-wireless@vger.kernel.org
    Cc: brcm80211-dev-list.pdl@broadcom.com
    Cc: SHA-cyfmac-dev-list@infineon.com
    Cc: netdev@vger.kernel.org
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20230215224110.never.022-kees@kernel.org
    [rename 'frame' to 'body']
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    1a30a6b2
p2p.c 72.6 KB