From 659fecb9fcbb2a08769b9cd71e2addad120a6be3 Mon Sep 17 00:00:00 2001 From: Sandeep Puligilla Date: Wed, 2 May 2018 18:17:44 -0700 Subject: [PATCH] qcacmn: Dereference vdev object only after validation check Dereference vdev object only after validation check to avoid null pointer derefernce in ucfg_scan_get_pno_def_params() API. Change-Id: I88e9a206ef0a948c4b2e35b05ffd74aee82e2961 CRs-Fixed: 2232809 --- umac/scan/dispatcher/src/wlan_scan_ucfg_api.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c index 19ffd569e685..baa7c934aaf9 100644 --- a/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c +++ b/umac/scan/dispatcher/src/wlan_scan_ucfg_api.c @@ -300,15 +300,20 @@ ucfg_scan_get_pno_def_params(struct wlan_objmgr_vdev *vdev, struct pno_scan_req_params *req) { struct scan_default_params *scan_def; - struct wlan_scan_obj *scan = wlan_vdev_get_scan_obj(vdev); + struct wlan_scan_obj *scan; struct pno_def_config *pno_def; - if (!vdev | !req | !scan) { - scm_err("vdev: 0x%pK, req: 0x%pK scan_obj: 0x%pK", - vdev, req, scan); + if (!vdev || !req) { + scm_err("vdev: 0x%pK, req: 0x%pK", + vdev, req); return QDF_STATUS_E_INVAL; } + scan = wlan_vdev_get_scan_obj(vdev); + if (!scan) { + scm_err("scan is NULL"); + return QDF_STATUS_E_INVAL; + } scan_def = wlan_vdev_get_def_scan_params(vdev); if (!scan_def) { scm_err("wlan_vdev_get_def_scan_params returned NULL"); @@ -316,7 +321,6 @@ ucfg_scan_get_pno_def_params(struct wlan_objmgr_vdev *vdev, } pno_def = &scan->pno_cfg; - req->active_dwell_time = scan_def->active_dwell; req->passive_dwell_time = scan_def->passive_dwell; @@ -326,7 +330,6 @@ ucfg_scan_get_pno_def_params(struct wlan_objmgr_vdev *vdev, */ ucfg_scan_update_pno_dwell_time(vdev, req, scan_def); req->adaptive_dwell_mode = pno_def->adaptive_dwell_mode; - req->pno_channel_prediction = pno_def->adaptive_dwell_mode; req->top_k_num_of_channels = pno_def->top_k_num_of_channels; req->stationary_thresh = pno_def->stationary_thresh;