summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCNSS_WLAN Service <cnssbldsw@qualcomm.com>2018-02-13 09:47:58 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2018-02-13 16:13:43 -0800
commit14ccebbaf11f6a6f9c09e75f2e6334cfd0bd8928 (patch)
tree99cfb9c823a4458679531c4c38d823e0d1cab071
parent4e820436ce24e34e7cb3cb704f960edc0cb57582 (diff)
parent05c729386d06139b3265fae95dac5e48495ff9d5 (diff)
Merge "qcacld-2.0: Fix buffer overflow in ol_tx_inspect_handler" into wlan-cld2.driver.lnx.1.0
-rw-r--r--CORE/CLD_TXRX/TXRX/ol_tx_send.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/CORE/CLD_TXRX/TXRX/ol_tx_send.c b/CORE/CLD_TXRX/TXRX/ol_tx_send.c
index dd5cff498af3..bc6120b6749a 100644
--- a/CORE/CLD_TXRX/TXRX/ol_tx_send.c
+++ b/CORE/CLD_TXRX/TXRX/ol_tx_send.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2011-2017 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2011-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
@@ -710,7 +710,14 @@ ol_tx_completion_handler(
trace_str = (status) ? "OT:C:F:" : "OT:C:S:";
for (i = 0; i < num_msdus; i++) {
tx_desc_id = desc_ids[i];
+ if (tx_desc_id >= pdev->tx_desc.pool_size) {
+ TXRX_PRINT(TXRX_PRINT_LEVEL_WARN,
+ "%s: drop due to invalid msdu id = %x\n",
+ __func__, tx_desc_id);
+ continue;
+ }
tx_desc = ol_tx_desc_find(pdev, tx_desc_id);
+ adf_os_assert(tx_desc);
tx_desc->status = status;
netbuf = tx_desc->netbuf;
@@ -991,7 +998,14 @@ ol_tx_inspect_handler(
for (i = 0; i < num_msdus; i++) {
tx_desc_id = desc_ids[i];
+ if (tx_desc_id >= pdev->tx_desc.pool_size) {
+ TXRX_PRINT(TXRX_PRINT_LEVEL_WARN,
+ "%s: drop due to invalid msdu id = %x\n",
+ __func__, tx_desc_id);
+ continue;
+ }
tx_desc = ol_tx_desc_find(pdev, tx_desc_id);
+ adf_os_assert(tx_desc);
netbuf = tx_desc->netbuf;
/* find the "vdev" this tx_desc belongs to */