hostapd: Make sure band selection does not result in NULL dereference
authorJouni Malinen <jouni@qca.qualcomm.com>
Mon, 1 Jun 2015 15:56:19 +0000 (18:56 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 2 Jun 2015 17:06:49 +0000 (20:06 +0300)
Explicitly check for iface->current_mode before dereferencing it. While
this case may not happen in practice, it is better for the setup
functions to be more careful when doing the initial band selection.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
src/ap/hw_features.c

index 069d1ae..7c08e52 100644 (file)
@@ -744,6 +744,9 @@ static int hostapd_is_usable_chan(struct hostapd_iface *iface,
        int i;
        struct hostapd_channel_data *chan;
 
+       if (!iface->current_mode)
+               return 0;
+
        for (i = 0; i < iface->current_mode->num_channels; i++) {
                chan = &iface->current_mode->channels[i];
                if (chan->chan != channel)
@@ -805,6 +808,12 @@ hostapd_check_chans(struct hostapd_iface *iface)
 
 static void hostapd_notify_bad_chans(struct hostapd_iface *iface)
 {
+       if (!iface->current_mode) {
+               hostapd_logger(iface->bss[0], NULL, HOSTAPD_MODULE_IEEE80211,
+                              HOSTAPD_LEVEL_WARNING,
+                              "Hardware does not support configured mode");
+               return;
+       }
        hostapd_logger(iface->bss[0], NULL,
                       HOSTAPD_MODULE_IEEE80211,
                       HOSTAPD_LEVEL_WARNING,