aboutsummaryrefslogtreecommitdiff
path: root/wpa_supplicant/p2p_supplicant_sd.c
diff options
context:
space:
mode:
Diffstat (limited to 'wpa_supplicant/p2p_supplicant_sd.c')
-rw-r--r--wpa_supplicant/p2p_supplicant_sd.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/wpa_supplicant/p2p_supplicant_sd.c b/wpa_supplicant/p2p_supplicant_sd.c
index b400cbacae61..1e2a733a4093 100644
--- a/wpa_supplicant/p2p_supplicant_sd.c
+++ b/wpa_supplicant/p2p_supplicant_sd.c
@@ -1213,12 +1213,22 @@ int wpas_p2p_service_add_bonjour(struct wpa_supplicant *wpa_s,
bsrv = os_zalloc(sizeof(*bsrv));
if (bsrv == NULL)
return -1;
- bsrv->query = query;
- bsrv->resp = resp;
+ bsrv->query = wpabuf_dup(query);
+ if (!bsrv->query)
+ goto error_bsrv;
+ bsrv->resp = wpabuf_dup(resp);
+ if (!bsrv->resp)
+ goto error_query;
dl_list_add(&wpa_s->global->p2p_srv_bonjour, &bsrv->list);
wpas_p2p_sd_service_update(wpa_s);
return 0;
+
+error_query:
+ wpabuf_free(bsrv->query);
+error_bsrv:
+ os_free(bsrv);
+ return -1;
}