hostapd: Fix set beacon in multiple BSSID scenario
authorMarek Kwaczynski <marek.kwaczynski@tieto.com>
Thu, 21 Nov 2013 12:33:09 +0000 (13:33 +0100)
committerJouni Malinen <j@w1.fi>
Fri, 22 Nov 2013 16:02:56 +0000 (18:02 +0200)
Check if the BSS interface has started before setting beacon.
Lack of this condition can cause segmantation fault.

Signed-hostap: Marek Kwaczynski <marek.kwaczynski@tieto.com>

src/ap/beacon.c

index 298c0fa..0e0dae4 100644 (file)
@@ -878,8 +878,10 @@ fail:
 void ieee802_11_set_beacons(struct hostapd_iface *iface)
 {
        size_t i;
-       for (i = 0; i < iface->num_bss; i++)
-               ieee802_11_set_beacon(iface->bss[i]);
+       for (i = 0; i < iface->num_bss; i++) {
+               if (iface->bss[i]->started)
+                       ieee802_11_set_beacon(iface->bss[i]);
+       }
 }
 
 
@@ -888,7 +890,7 @@ void ieee802_11_update_beacons(struct hostapd_iface *iface)
 {
        size_t i;
        for (i = 0; i < iface->num_bss; i++)
-               if (iface->bss[i]->beacon_set_done)
+               if (iface->bss[i]->beacon_set_done && iface->bss[i]->started)
                        ieee802_11_set_beacon(iface->bss[i]);
 }