diff options
| -rw-r--r-- | core/hdd/src/wlan_hdd_ext_scan.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/core/hdd/src/wlan_hdd_ext_scan.c b/core/hdd/src/wlan_hdd_ext_scan.c index defad2bc96c8..570567005e15 100644 --- a/core/hdd/src/wlan_hdd_ext_scan.c +++ b/core/hdd/src/wlan_hdd_ext_scan.c @@ -3770,11 +3770,19 @@ static int hdd_extscan_epno_fill_network_list( struct nlattr *networks; int rem1, ssid_len; uint8_t index, *ssid; + uint32_t expected_networks; + expected_networks = req_msg->num_networks; index = 0; nla_for_each_nested(networks, tb[QCA_WLAN_VENDOR_ATTR_PNO_SET_LIST_PARAM_EPNO_NETWORKS_LIST], rem1) { + + if (index == expected_networks) { + hdd_warn("ignoring excess networks"); + break; + } + if (nla_parse(network, QCA_WLAN_VENDOR_ATTR_PNO_MAX, nla_data(networks), nla_len(networks), wlan_hdd_pno_config_policy)) { @@ -3829,6 +3837,7 @@ static int hdd_extscan_epno_fill_network_list( index++; } + req_msg->num_networks = index; return 0; } |
