]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
P2P: Fix memory leak with driver-based P2P management
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 24 Aug 2012 17:45:22 +0000 (20:45 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 24 Aug 2012 17:45:22 +0000 (20:45 +0300)
If the P2P management operations are handled within the driver, the
P2P service entries were not freed when terminating wpa_supplicant.
Fix this by calling wpas_p2p_service_flush() even if the P2P module
within wpa_supplicant has not been initialized.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>

wpa_supplicant/p2p_supplicant.c

index 32b7b44889f39141e81ecae28056ee93d497d4b9..59ceae7fe5c07439a67953dbfcf0298bc538aab4 100644 (file)
@@ -2641,13 +2641,14 @@ void wpas_p2p_deinit_global(struct wpa_global *global)
 {
        struct wpa_supplicant *wpa_s, *tmp;
 
+       wpa_s = global->ifaces;
+       if (wpa_s)
+               wpas_p2p_service_flush(wpa_s);
+
        if (global->p2p == NULL)
                return;
 
        /* Remove remaining P2P group interfaces */
-       wpa_s = global->ifaces;
-       if (wpa_s)
-               wpas_p2p_service_flush(wpa_s);
        while (wpa_s && wpa_s->p2p_group_interface != NOT_P2P_GROUP_INTERFACE)
                wpa_s = wpa_s->next;
        while (wpa_s) {