Quellcode durchsuchen

qcacmn: add psoc null pointer check to wlan_objmgr_get_peer_by_mac

Current code directly passes the result of wlan_vdev_get_psoc(vdev) to
wlan_objmgr_get_peer_by_mac, without null pointer checking, which can
result in null pointer dereferencing.
To fix this issue, add checking of the psoc pointer before passing,
and add verification inside wlan_objmgr_get_peer_by_mac.

Change-Id: Iaf0e2535c3a584db788ddc621745c66c296fe08f
CRs-Fixed: 3277651
Mohammed Ahmed vor 2 Jahren
Ursprung
Commit
fa6e07082f

+ 6 - 1
os_if/linux/mlme/src/osif_cm_connect_rsp.c

@@ -447,8 +447,13 @@ osif_fill_peer_mld_mac_connect_resp(struct wlan_objmgr_vdev *vdev,
 				    struct cfg80211_connect_resp_params *conn_rsp_params)
 {
 	struct wlan_objmgr_peer *peer_obj;
+	struct wlan_objmgr_psoc *psoc;
 
-	peer_obj = wlan_objmgr_get_peer_by_mac(wlan_vdev_get_psoc(vdev),
+	psoc = wlan_vdev_get_psoc(vdev);
+	if (!psoc)
+		return QDF_STATUS_E_INVAL;
+
+	peer_obj = wlan_objmgr_get_peer_by_mac(psoc,
 					       rsp->bssid.bytes, WLAN_OSIF_ID);
 	if (!peer_obj)
 		return QDF_STATUS_E_INVAL;

+ 4 - 0
umac/cmn_services/obj_mgr/src/wlan_objmgr_psoc_obj.c

@@ -2166,6 +2166,8 @@ struct wlan_objmgr_peer *wlan_objmgr_get_peer_by_mac_debug(
 
 	if (!macaddr)
 		return NULL;
+	if (!psoc)
+		return NULL;
 
 	/* psoc lock should be taken before peer list lock */
 	wlan_psoc_obj_lock(psoc);
@@ -2202,6 +2204,8 @@ struct wlan_objmgr_peer *wlan_objmgr_get_peer_by_mac(
 
 	if (!macaddr)
 		return NULL;
+	if (!psoc)
+		return NULL;
 
 	/* psoc lock should be taken before peer list lock */
 	wlan_psoc_obj_lock(psoc);