From d58cfc9eee850af82c4612c5e4b145f96ef98e9d Mon Sep 17 00:00:00 2001 From: Jiachao Wu Date: Wed, 27 Dec 2017 14:15:23 +0800 Subject: [PATCH] qcacld-3.0: Check NULL pointer of roam_profile __wlan_hdd_cfg80211_get_key was invoked when unloading driver. SAP ctx had been freed at this time.wlan_sap_get_roam_profile will return NULL. Check NULL pointer before use roam_profile. Change-Id: If1f11f0fb7027a6af4e3242fe9af722740d32850 CRs-Fixed: 2162395 --- core/hdd/src/wlan_hdd_cfg80211.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/core/hdd/src/wlan_hdd_cfg80211.c b/core/hdd/src/wlan_hdd_cfg80211.c index 8e1b7178c9d4..0a4412966270 100644 --- a/core/hdd/src/wlan_hdd_cfg80211.c +++ b/core/hdd/src/wlan_hdd_cfg80211.c @@ -14650,6 +14650,11 @@ static int __wlan_hdd_cfg80211_get_key(struct wiphy *wiphy, return -EINVAL; } + if (wlan_hdd_validate_session_id(adapter->session_id)) { + hdd_err("Invalid session id: %d", adapter->session_id); + return -EINVAL; + } + hdd_debug("Device_mode %s(%d)", hdd_device_mode_to_string(adapter->device_mode), adapter->device_mode); @@ -14673,6 +14678,11 @@ static int __wlan_hdd_cfg80211_get_key(struct wiphy *wiphy, roam_profile = &(pWextState->roamProfile); } + if (roam_profile == NULL) { + hdd_err("Get roam profile failed!"); + return -EINVAL; + } + switch (roam_profile->EncryptionType.encryptionType[0]) { case eCSR_ENCRYPT_TYPE_NONE: params.cipher = IW_AUTH_CIPHER_NONE;