| From ebeb36670ecac36c179b5fb5d5c88ff03ba191ec Mon Sep 17 00:00:00 2001 |
| From: Johan Hovold <johan@kernel.org> |
| Date: Mon, 13 Mar 2017 13:44:20 +0100 |
| Subject: ath9k_htc: fix NULL-deref at probe |
| |
| From: Johan Hovold <johan@kernel.org> |
| |
| commit ebeb36670ecac36c179b5fb5d5c88ff03ba191ec upstream. |
| |
| Make sure to check the number of endpoints to avoid dereferencing a |
| NULL-pointer or accessing memory beyond the endpoint array should a |
| malicious device lack the expected endpoints. |
| |
| Fixes: 36bcce430657 ("ath9k_htc: Handle storage devices") |
| Signed-off-by: Johan Hovold <johan@kernel.org> |
| Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/net/wireless/ath/ath9k/hif_usb.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/net/wireless/ath/ath9k/hif_usb.c |
| +++ b/drivers/net/wireless/ath/ath9k/hif_usb.c |
| @@ -1220,6 +1220,9 @@ static int send_eject_command(struct usb |
| u8 bulk_out_ep; |
| int r; |
| |
| + if (iface_desc->desc.bNumEndpoints < 2) |
| + return -ENODEV; |
| + |
| /* Find bulk out endpoint */ |
| for (r = 1; r >= 0; r--) { |
| endpoint = &iface_desc->endpoint[r].desc; |