Browse Source

qcacld-3.0: Fix NULL pointer dereference in csr_is_p2p_session_connected

Check pSession->pCurRoamProfile against NULL before dereferencing it in
function csr_is_p2p_session_connected.

Change-Id: I61f681dfd4ff3c7fd2e443f54f6b1713db088250
CRs-Fixed: 1034255
Naveen Rawat 8 years ago
parent
commit
9598f5edb9
1 changed files with 14 additions and 10 deletions
  1. 14 10
      core/sme/src/csr/csr_util.c

+ 14 - 10
core/sme/src/csr/csr_util.c

@@ -893,16 +893,20 @@ bool csr_is_p2p_session_connected(tpAniSirGlobal pMac)
 	enum tQDF_ADAPTER_MODE persona;
 
 	for (i = 0; i < CSR_ROAM_SESSION_MAX; i++) {
-		if (CSR_IS_SESSION_VALID(pMac, i)
-		    && !csr_is_conn_state_disconnected(pMac, i)) {
-			pSession = CSR_GET_SESSION(pMac, i);
-			persona = pSession->pCurRoamProfile->csrPersona;
-			if ((NULL != pSession->pCurRoamProfile) &&
-				((QDF_P2P_CLIENT_MODE == persona) ||
-				(QDF_P2P_GO_MODE == persona))) {
-				return true;
-			}
-		}
+		if (!CSR_IS_SESSION_VALID(pMac, i))
+			continue;
+
+		if (csr_is_conn_state_disconnected(pMac, i))
+			continue;
+
+		pSession = CSR_GET_SESSION(pMac, i);
+		if (pSession->pCurRoamProfile == NULL)
+			continue;
+
+		persona = pSession->pCurRoamProfile->csrPersona;
+		if (QDF_P2P_CLIENT_MODE == persona ||
+				QDF_P2P_GO_MODE == persona)
+			return true;
 	}
 
 	return false;