Skip to contentSkip to conversation

ath10k: add sanity check to ie_len before parsing fw/board ie

PATCH In review [email protected] 2 participants 3 messages Jan 8, 2018 – Jan 16, 2018 Qualcomm Atheros ATH10K wireless driver

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ath10k: add sanity check to ie_len before parsing fw/board ie

From: Ryan Hsu <[email protected]>

Validate ie_len after the alignment padding before access the buffer to avoid potential overflow.

---
 drivers/net/wireless/ath/ath10k/core.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)
drivers/net/wireless/ath/ath10k/core.c +7 -6
index 51444d3..64713d1 100644
@@ -1276,7 +1276,10 @@ static int ath10k_core_fetch_board_data_api_n(struct ath10k *ar,
 		len -= sizeof(*hdr);
 		data = hdr->data;
 
-		if (len < ALIGN(ie_len, 4)) {
+		/* jump over the padding */
+		ie_len = ALIGN(ie_len, 4);
+
+		if (len < ie_len) {
 			ath10k_err(ar, "invalid length for board ie_id %d ie_len %zu len %zu\n",
 				   ie_id, ie_len, len);
 			ret = -EINVAL;
@@ -1315,8 +1318,6 @@ static int ath10k_core_fetch_board_data_api_n(struct ath10k *ar,
 			goto out;
 		}
 
-		/* jump over the padding */
-		ie_len = ALIGN(ie_len, 4);
 
 		len -= ie_len;
 		data += ie_len;
@@ -1448,6 +1449,9 @@ int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,
 		len -= sizeof(*hdr);
 		data += sizeof(*hdr);
 
+		/* jump over the padding */
+		ie_len = ALIGN(ie_len, 4);
+
 		if (len < ie_len) {
 			ath10k_err(ar, "invalid length for FW IE %d (%zu < %zu)\n",
 				   ie_id, len, ie_len);
@@ -1553,9 +1557,6 @@ int ath10k_core_fetch_firmware_api_n(struct ath10k *ar, const char *name,
 			break;
 		}
 
-		/* jump over the padding */
-		ie_len = ALIGN(ie_len, 4);
-
 		len -= ie_len;
 		data += ie_len;
 	}
Signature · 1 line
1.9.1
#1 lore raw
Quoted 5 lines · [email protected] wrote:

Validate ie_len after the alignment padding before access the buffer to avoid potential overflow.

Patch applied to ath-next branch of ath.git, thanks.

9ed4f9162873 ath10k: add sanity check to ie_len before parsing fw/board ie

Signature · 3 lines
https://patchwork.kernel.org/patch/10150769/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
#2 lore raw
In reply to [email protected]
Quoted 5 lines · [email protected] wrote:

Validate ie_len after the alignment padding before access the buffer to avoid potential overflow.

Patch applied to ath-next branch of ath.git, thanks.

9ed4f9162873 ath10k: add sanity check to ie_len before parsing fw/board ie

Signature · 9 lines
https://patchwork.kernel.org/patch/10150769/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


_______________________________________________
ath10k mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/ath10k