summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com>2023-04-20 10:17:58 +0000
committerAndroid Partner Code Review <android-gerrit-partner@google.com>2023-04-20 10:17:58 +0000
commit43d7af1cff8eeafdc0a1369edfbb671225b4f574 (patch)
treeb6f26ec3631697731307be70b74665fd71745dc4
parent2594720d48f6c7b0e0caa90c147c5b22fc18b748 (diff)
parentefb7cbd8ff60dc9d1b98d9bd33c87594408ae7bb (diff)
downloadcnss2-43d7af1cff8eeafdc0a1369edfbb671225b4f574.tar.gz
* changes: cnss2: Add data length validation in cnss_wlfw_qdss_data_send_sync() cnss2: Validate maximum number of memory segments
-rw-r--r--cnss2/main.h5
-rw-r--r--cnss2/qmi.c3
2 files changed, 4 insertions, 4 deletions
diff --git a/cnss2/main.h b/cnss2/main.h
index 0125237..0d45829 100644
--- a/cnss2/main.h
+++ b/cnss2/main.h
@@ -51,7 +51,6 @@
#define MAX_NO_OF_MAC_ADDR 4
#define QMI_WLFW_MAX_TIMESTAMP_LEN 32
-#define QMI_WLFW_MAX_NUM_MEM_SEG 32
#define QMI_WLFW_MAX_BUILD_ID_LEN 128
#define CNSS_RDDM_TIMEOUT_MS 20000
#define RECOVERY_TIMEOUT 60000
@@ -487,7 +486,7 @@ struct cnss_plat_data {
char fw_build_id[QMI_WLFW_MAX_BUILD_ID_LEN + 1];
u32 otp_version;
u32 fw_mem_seg_len;
- struct cnss_fw_mem fw_mem[QMI_WLFW_MAX_NUM_MEM_SEG];
+ struct cnss_fw_mem fw_mem[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
struct cnss_fw_mem m3_mem;
struct cnss_fw_mem *cal_mem;
u64 cal_time;
@@ -495,7 +494,7 @@ struct cnss_plat_data {
u32 cal_file_size;
struct completion daemon_connected;
u32 qdss_mem_seg_len;
- struct cnss_fw_mem qdss_mem[QMI_WLFW_MAX_NUM_MEM_SEG];
+ struct cnss_fw_mem qdss_mem[QMI_WLFW_MAX_NUM_MEM_SEG_V01];
u32 *qdss_reg;
struct cnss_pin_connect_result pin_result;
struct dentry *root_dentry;
diff --git a/cnss2/qmi.c b/cnss2/qmi.c
index 1b9f388..dba4215 100644
--- a/cnss2/qmi.c
+++ b/cnss2/qmi.c
@@ -1143,7 +1143,8 @@ int cnss_wlfw_qdss_data_send_sync(struct cnss_plat_data *plat_priv, char *file_n
resp->total_size == total_size) &&
(resp->seg_id_valid == 1 && resp->seg_id == req->seg_id) &&
(resp->data_valid == 1 &&
- resp->data_len <= QMI_WLFW_MAX_DATA_SIZE_V01)) {
+ resp->data_len <= QMI_WLFW_MAX_DATA_SIZE_V01) &&
+ resp->data_len <= remaining) {
memcpy(p_qdss_trace_data_temp,
resp->data, resp->data_len);
} else {