From 775e986d5f3cd9ae17538117ef70852c6d77f496 Mon Sep 17 00:00:00 2001 From: Mohammed Shafi Shajakhan Date: Wed, 22 Mar 2017 17:12:38 +0530 Subject: [PATCH] hostapd: Fix crash on consecutive channel switch failures With multiple interface like AP and station which is already associated to some other AP, when we try to do channel switch for the AP mode (different from the operation channel support of station) and if the AP channel switch fails continously (including the fallback channel switch), results in a crash due to NULL pointer dereference. This is because hostapd_deinit_driver() assigns the driver context (drv_priv) to NULL as we are not able to bring up the interface with a new channel Signed-off-by: Mohammed Shafi Shajakhan --- src/ap/ap_drv_ops.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ap/ap_drv_ops.h b/src/ap/ap_drv_ops.h index 0bb7954ec..aa82eb3a7 100644 --- a/src/ap/ap_drv_ops.h +++ b/src/ap/ap_drv_ops.h @@ -274,7 +274,8 @@ static inline const char * hostapd_drv_get_radio_name(struct hostapd_data *hapd) static inline int hostapd_drv_switch_channel(struct hostapd_data *hapd, struct csa_settings *settings) { - if (hapd->driver == NULL || hapd->driver->switch_channel == NULL) + if (hapd->driver == NULL || hapd->driver->switch_channel == NULL || + hapd->drv_priv == NULL) return -ENOTSUP; return hapd->driver->switch_channel(hapd->drv_priv, settings);