Patch "ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb()" has been added to the 5.9-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb()

to the 5.9-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     ath9k-fix-potential-out-of-bounds-in-ath9k_htc_txcom.patch
and it can be found in the queue-5.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit f93d04a5b201253e4a33fe0841c9520501935248
Author: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
Date:   Thu Aug 13 17:12:53 2020 +0300

    ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb()
    
    [ Upstream commit 2705cd7558e718a7240c64eb0afb2edad5f8c190 ]
    
    The value of "htc_hdr->endpoint_id" comes from skb->data so Smatch marks
    it as untrusted so we have to check it before using it as an array
    offset.
    
    This is similar to a bug that syzkaller found in commit e4ff08a4d727
    ("ath9k: Fix use-after-free Write in ath9k_htc_rx_msg") so it is
    probably a real issue.
    
    Fixes: fb9987d0f748 ("ath9k_htc: Support for AR9271 chipset.")
    Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx>
    Signed-off-by: Kalle Valo <kvalo@xxxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/20200813141253.GA457408@mwanda
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c
index d2e062eaf5614..510e61e97dbcb 100644
--- a/drivers/net/wireless/ath/ath9k/htc_hst.c
+++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
@@ -339,6 +339,8 @@ void ath9k_htc_txcompletion_cb(struct htc_target *htc_handle,
 
 	if (skb) {
 		htc_hdr = (struct htc_frame_hdr *) skb->data;
+		if (htc_hdr->endpoint_id >= ARRAY_SIZE(htc_handle->endpoint))
+			goto ret;
 		endpoint = &htc_handle->endpoint[htc_hdr->endpoint_id];
 		skb_pull(skb, sizeof(struct htc_frame_hdr));
 



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux