Преглед изворни кода

qcacld-3.0: Fix NULL pointer access issue in lim_tx_mgmt_frame

In lim_tx_mgmt_frame, if opmode is QDF_NAN_DISC_MODE, pointer session
is NULL. Pointer session is used later in LFR2 code.

The LFR2 code in lim_tx_mgmt_frame should be called when the opmode is
not QDF_NAN_DISC_MODE.

Change-Id: If9848782473b7b38c3a0cbec30d7d870aceb619f
CRs-Fixed: 3287894
Bing Sun пре 2 година
родитељ
комит
94bde882f6
1 измењених фајлова са 14 додато и 11 уклоњено
  1. 14 11
      core/mac/src/pe/lim/lim_send_management_frames.c

+ 14 - 11
core/mac/src/pe/lim/lim_send_management_frames.c

@@ -6417,18 +6417,21 @@ static void lim_tx_mgmt_frame(struct mac_context *mac_ctx, uint8_t vdev_id,
 
 	if (opmode != QDF_NAN_DISC_MODE) {
 		min_rid = lim_get_min_session_txrate(session);
-	}
-	if (fc->subType == SIR_MAC_MGMT_AUTH) {
-		tpSirFTPreAuthReq pre_auth_req;
-		uint16_t auth_algo = *(uint16_t *)(frame +
-						   sizeof(tSirMacMgmtHdr));
-
-		if ((auth_algo == eSIR_AUTH_TYPE_SAE) &&
-		    (session->ftPEContext.pFTPreAuthReq)) {
-			pre_auth_req = session->ftPEContext.pFTPreAuthReq;
-			channel_freq = pre_auth_req->pre_auth_channel_freq;
+		if (fc->subType == SIR_MAC_MGMT_AUTH) {
+			tpSirFTPreAuthReq pre_auth_req;
+			uint16_t auth_algo = *(uint16_t *)(frame +
+						sizeof(tSirMacMgmtHdr));
+
+			if ((auth_algo == eSIR_AUTH_TYPE_SAE) &&
+			    (session->ftPEContext.pFTPreAuthReq)) {
+				pre_auth_req =
+					session->ftPEContext.pFTPreAuthReq;
+				channel_freq =
+					pre_auth_req->pre_auth_channel_freq;
+			}
+			pe_debug("TX SAE pre-auth frame on freq %d",
+				 channel_freq);
 		}
-		pe_debug("TX SAE pre-auth frame on freq %d", channel_freq);
 	}
 
 	qdf_status = wma_tx_frameWithTxComplete(mac_ctx, packet,