qcacmn: Fix memory overflow in wmi roam scan filter cmd
The length of buffer used to send wmi roam scan filter cmd is not properly calculated and thus the length is less than the actual data to be copied. Fix it by properly calculating the length of the buffer. Change-Id: I6a3baa5ca5560d2d04f9bd41a709a37abc1b95a9 CRs-Fixed: 2072057
Dieser Commit ist enthalten in:

committet von
Nandini Suresh

Ursprung
3da0811330
Commit
d5406a73da
@@ -3152,7 +3152,6 @@ struct ssid_hotlist_param {
|
||||
/**
|
||||
* struct roam_scan_filter_params - Structure holding roaming scan
|
||||
* parameters
|
||||
* @len: length
|
||||
* @op_bitmap: bitmap to determine reason of roaming
|
||||
* @session_id: vdev id
|
||||
* @num_bssid_black_list: The number of BSSID's that we should
|
||||
@@ -3182,7 +3181,6 @@ struct ssid_hotlist_param {
|
||||
*/
|
||||
|
||||
struct roam_scan_filter_params {
|
||||
uint32_t len;
|
||||
uint32_t op_bitmap;
|
||||
uint8_t session_id;
|
||||
uint32_t num_bssid_black_list;
|
||||
|
@@ -5885,8 +5885,21 @@ static QDF_STATUS send_roam_scan_filter_cmd_tlv(wmi_unified_t wmi_handle,
|
||||
wmi_roam_lca_disallow_config_tlv_param *blist_param;
|
||||
|
||||
len = sizeof(wmi_roam_filter_fixed_param);
|
||||
|
||||
len += WMI_TLV_HDR_SIZE;
|
||||
len += roam_req->len;
|
||||
if (roam_req->num_bssid_black_list)
|
||||
len += roam_req->num_bssid_black_list * sizeof(wmi_mac_addr);
|
||||
len += WMI_TLV_HDR_SIZE;
|
||||
if (roam_req->num_ssid_white_list)
|
||||
len += roam_req->num_ssid_white_list * sizeof(wmi_ssid);
|
||||
len += 2 * WMI_TLV_HDR_SIZE;
|
||||
if (roam_req->num_bssid_preferred_list) {
|
||||
len += roam_req->num_bssid_preferred_list * sizeof(wmi_mac_addr);
|
||||
len += roam_req->num_bssid_preferred_list * sizeof(A_UINT32);
|
||||
}
|
||||
if (roam_req->lca_disallow_config_present)
|
||||
len += WMI_TLV_HDR_SIZE +
|
||||
sizeof(wmi_roam_lca_disallow_config_tlv_param);
|
||||
|
||||
buf = wmi_buf_alloc(wmi_handle, len);
|
||||
if (!buf) {
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren