Message ID | 20200813141253.GA457408@mwanda (mailing list archive) |
---|---|
State | Accepted |
Commit | 2705cd7558e718a7240c64eb0afb2edad5f8c190 |
Delegated to: | Kalle Valo |
Headers | show |
Series | ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb() | expand |
Dan Carpenter <dan.carpenter@oracle.com> wrote: > 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@oracle.com> > Signed-off-by: Kalle Valo <kvalo@codeaurora.org> Patch applied to ath-next branch of ath.git, thanks. 2705cd7558e7 ath9k: Fix potential out of bounds in ath9k_htc_txcompletion_cb()
diff --git a/drivers/net/wireless/ath/ath9k/htc_hst.c b/drivers/net/wireless/ath/ath9k/htc_hst.c index d2e062eaf561..510e61e97dbc 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));
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@oracle.com> --- drivers/net/wireless/ath/ath9k/htc_hst.c | 2 ++ 1 file changed, 2 insertions(+)