wlan: Check for return codes of dot11f_unpack functions
Add checks for return codes of dot11f_unpack functions.
Change-Id: I56149a2a767a9f13009710750a0588c0d658eb56
CRs-Fixed: 2213317
diff --git a/CORE/HDD/src/wlan_hdd_hostapd.c b/CORE/HDD/src/wlan_hdd_hostapd.c
index 463919a..03573ec 100644
--- a/CORE/HDD/src/wlan_hdd_hostapd.c
+++ b/CORE/HDD/src/wlan_hdd_hostapd.c
@@ -1761,6 +1761,7 @@
tANI_U8 *pRsnIe;
tANI_U16 RSNIeLen;
+ tANI_U32 status;
if (NULL == halHandle)
{
@@ -1786,10 +1787,18 @@
RSNIeLen = gen_ie_len - 2;
// Unpack the RSN IE
memset(&dot11RSNIE, 0, sizeof(tDot11fIERSN));
- dot11fUnpackIeRSN((tpAniSirGlobal) halHandle,
- pRsnIe,
- RSNIeLen,
+ status = dot11fUnpackIeRSN((tpAniSirGlobal) halHandle,
+ pRsnIe,
+ RSNIeLen,
&dot11RSNIE);
+ if (DOT11F_FAILED(status))
+ {
+ hddLog(LOGE,
+ FL("unpack failed for RSN IE status:(0x%08x)"),
+ status);
+ return -EINVAL;
+ }
+
// Copy out the encryption and authentication types
hddLog(LOG1, FL("%s: pairwise cipher suite count: %d"),
__func__, dot11RSNIE.pwise_cipher_suite_count );
@@ -1823,10 +1832,18 @@
RSNIeLen = gen_ie_len - (2 + 4);
// Unpack the WPA IE
memset(&dot11WPAIE, 0, sizeof(tDot11fIEWPA));
- dot11fUnpackIeWPA((tpAniSirGlobal) halHandle,
- pRsnIe,
- RSNIeLen,
+ status = dot11fUnpackIeWPA((tpAniSirGlobal) halHandle,
+ pRsnIe,
+ RSNIeLen,
&dot11WPAIE);
+ if (DOT11F_FAILED(status))
+ {
+ hddLog(LOGE,
+ FL("unpack failed for WPA IE status:(0x%08x)"),
+ status);
+ return -EINVAL;
+ }
+
// Copy out the encryption and authentication types
hddLog(LOG1, FL("%s: WPA unicast cipher suite count: %d"),
__func__, dot11WPAIE.unicast_cipher_count );