]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Fix memory corruption on BSS entry reallocation
authorJouni Malinen <j@w1.fi>
Sat, 2 Jan 2010 23:25:43 +0000 (01:25 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 2 Jan 2010 23:25:43 +0000 (01:25 +0200)
The wpa_s->bss_id list was being corrupted when the BSS entry needed
to be reallocated due to longer IE data. The entry has to be removed
from all lists before reallocation to avoid this (it was only removed
from the wpa_s->bss list).

wpa_supplicant/bss.c

index 62086a4eb648425b13112d1f7d585b58f8af2750..6446c058f0d968d126f460fabc8ab1f7ed16b53e 100644 (file)
@@ -148,12 +148,15 @@ static void wpa_bss_update(struct wpa_supplicant *wpa_s, struct wpa_bss *bss,
                bss->ie_len = res->ie_len;
        } else {
                struct wpa_bss *nbss;
+               struct dl_list *prev = bss->list_id.prev;
+               dl_list_del(&bss->list_id);
                nbss = os_realloc(bss, sizeof(*bss) + res->ie_len);
                if (nbss) {
                        bss = nbss;
                        os_memcpy(bss + 1, res + 1, res->ie_len);
                        bss->ie_len = res->ie_len;
                }
+               dl_list_add(prev, &bss->list_id);
        }
        dl_list_add_tail(&wpa_s->bss, &bss->list);
 }