Procházet zdrojové kódy

qcacld-3.0: Check g_son_cbs before accessing it

If g_son_cbs[*] is null. do not access fields in g_son_cbs[*].

Change-Id: I83314adf3110885f8ce6af0b3b1317c0c0ebd6ae
CRs-Fixed: 3053553
Bing Sun před 3 roky
rodič
revize
d875181af1
1 změnil soubory, kde provedl 7 přidání a 3 odebrání
  1. 7 3
      components/son/dispatcher/src/son_api.c

+ 7 - 3
components/son/dispatcher/src/son_api.c

@@ -1123,6 +1123,10 @@ int wlan_son_cbs_enable(struct wlan_objmgr_vdev *vdev)
 	QDF_STATUS status;
 
 	cbs = g_son_cbs[wlan_vdev_get_id(vdev)];
+	if (!cbs) {
+		son_err("invalid cbs");
+		return -EINVAL;
+	}
 	psoc = wlan_vdev_get_psoc(vdev);
 	if (!psoc) {
 		son_err("invalid psoc");
@@ -1217,7 +1221,7 @@ int wlan_son_cbs_disable(struct wlan_objmgr_vdev *vdev)
 	struct son_cbs *cbs;
 
 	if (!vdev) {
-		son_err("invalid psoc");
+		son_err("invalid vdev");
 		return -EINVAL;
 	}
 	psoc = wlan_vdev_get_psoc(vdev);
@@ -1226,7 +1230,7 @@ int wlan_son_cbs_disable(struct wlan_objmgr_vdev *vdev)
 		return -EINVAL;
 	}
 	cbs = g_son_cbs[wlan_vdev_get_id(vdev)];
-	if (!cbs->vdev) {
+	if (!cbs || !cbs->vdev) {
 		son_err("vdev null");
 		return -EINVAL;
 	}
@@ -1260,7 +1264,7 @@ int wlan_son_set_cbs(struct wlan_objmgr_vdev *vdev,
 {
 	son_debug("Enable: %u", enable);
 
-	if (!vdev && !g_son_cbs[wlan_vdev_get_id(vdev)])
+	if (!vdev || !g_son_cbs[wlan_vdev_get_id(vdev)])
 		return -EINVAL;
 
 	if (enable)