• Arnd Bergmann's avatar
    Bluetooth: avoid memcmp() out of bounds warning · 9d1a3c74
    Arnd Bergmann authored
    bacmp() is a wrapper around memcpy(), which contain compile-time
    checks for buffer overflow. Since the hci_conn_request_evt() also calls
    bt_dev_dbg() with an implicit NULL pointer check, the compiler is now
    aware of a case where 'hdev' is NULL and treats this as meaning that
    zero bytes are available:
    
    In file included from net/bluetooth/hci_event.c:32:
    In function 'bacmp',
        inlined from 'hci_conn_request_evt' at net/bluetooth/hci_event.c:3276:7:
    include/net/bluetooth/bluetooth.h:364:16: error: 'memcmp' specified bound 6 exceeds source size 0 [-Werror=stringop-overread]
      364 |         return memcmp(ba1, ba2, sizeof(bdaddr_t));
          |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    
    Add another NULL pointer check before the bacmp() to ensure the compiler
    understands the code flow enough to not warn about it.  Since the patch
    that introduced the warning is marked for stable backports, this one
    should also go that way to avoid introducing build regressions.
    
    Fixes: 1ffc6f8c ("Bluetooth: Reject connection with the device which has same BD_ADDR")
    Cc: Kees Cook <keescook@chromium.org>
    Cc: "Lee, Chun-Yi" <jlee@suse.com>
    Cc: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
    Cc: Marcel Holtmann <marcel@holtmann.org>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Reviewed-by: default avatarKees Cook <keescook@chromium.org>
    Signed-off-by: default avatarLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
    9d1a3c74
hci_event.c 197 KB