Commit 5a1ea29
Bluetooth: L2CAP: Fix type confusion in l2cap_ecred_reconf_rsp()
commit 1514567 upstream.
l2cap_ecred_reconf_rsp() casts the incoming data to struct
l2cap_ecred_conn_rsp (the ECRED *connection* response, 8 bytes with
result at offset 6) instead of struct l2cap_ecred_reconf_rsp (2 bytes
with result at offset 0).
This causes two problems:
- The sizeof(*rsp) length check requires 8 bytes instead of the
correct 2, so valid L2CAP_ECRED_RECONF_RSP packets are rejected
with -EPROTO.
- rsp->result reads from offset 6 instead of offset 0, returning
wrong data when the packet is large enough to pass the check.
Fix by using the correct type. Also pass the already byte-swapped
result variable to BT_DBG instead of the raw __le16 field.
Fixes: 15f02b9 ("Bluetooth: L2CAP: Add initial code for Enhanced Credit Based Mode")
Cc: stable@vger.kernel.org
Signed-off-by: Lukas Johannes Möller <research@johannes-moeller.dev>
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>1 parent 1768244 commit 5a1ea29
1 file changed
+2
-2
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5408 | 5408 | | |
5409 | 5409 | | |
5410 | 5410 | | |
5411 | | - | |
| 5411 | + | |
5412 | 5412 | | |
5413 | 5413 | | |
5414 | 5414 | | |
5415 | 5415 | | |
5416 | 5416 | | |
5417 | 5417 | | |
5418 | 5418 | | |
5419 | | - | |
| 5419 | + | |
5420 | 5420 | | |
5421 | 5421 | | |
5422 | 5422 | | |
| |||
0 commit comments