]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
P2P: Clear old P2PS provision data
authorAvrahams Stern <avraham.stern@intel.com>
Tue, 18 Oct 2016 09:44:16 +0000 (12:44 +0300)
committerJouni Malinen <j@w1.fi>
Fri, 28 Oct 2016 21:55:49 +0000 (00:55 +0300)
Receiving a provision discovery request for an ASP service that
has auto accept set to false should result in a provision discovery
response with the status field set to "currently unavailable".
Having stale P2PS provision data, results in sending a response with
the status set to success because it is mistakenly referred to as the
follow-on provision discovery request.

Fix that by clearing stale P2PS provision data in the following cases:
 1. When provision discovery is complete
 2. When ASP services are flushed (in which case old ASP provisioning
    is no longer valid).

Signed-off-by: Avrahams Stern <avraham.stern@intel.com>
src/p2p/p2p.c
src/p2p/p2p_pd.c

index cdf6d9915fdbba6206e67b659b56a74ddd2d1bab..cd2fba334680c5dc8ee97b5db6f934152d9cbd29 100644 (file)
@@ -2822,6 +2822,7 @@ void p2p_service_flush_asp(struct p2p_data *p2p)
        }
 
        p2p->p2ps_adv_list = NULL;
+       p2ps_prov_free(p2p);
        p2p_dbg(p2p, "All ASP advertisements flushed");
 }
 
index 54b2ab425828db0af0bd62b8606b3d03c7414721..3994ec03f86ba404d4876513cf6f0c644753ea1f 100644 (file)
@@ -1163,6 +1163,9 @@ out:
                                        msg.group_id, msg.group_id_len);
        }
 
+       if (reject != P2P_SC_FAIL_INFO_CURRENTLY_UNAVAILABLE)
+               p2ps_prov_free(p2p);
+
        if (reject == P2P_SC_SUCCESS) {
                switch (config_methods) {
                case WPS_CONFIG_DISPLAY: