diff --git a/src/p2p.c b/src/p2p.c index c823b2b1..b66a45cc 100644 --- a/src/p2p.c +++ b/src/p2p.c @@ -1500,19 +1500,18 @@ static void p2p_try_connect_group(struct p2p_device *dev) struct iovec ie_iov[16]; int ie_num = 0; int r; - struct p2p_association_req info = {}; + struct p2p_association_req info = { + .capability = dev->capability, + .device_info = dev->device_info, + }; struct ie_rsn_info bss_info = {}; struct ie_rsn_info rsn_info = {}; uint8_t rsne_buf[256]; uint8_t wfd_ie[32]; + _auto_(l_free) uint8_t *req_ie = + p2p_build_association_req(&info, &ie_iov[ie_num].iov_len); - info.capability = dev->capability; - info.device_info = dev->device_info; - - ie_iov[0].iov_base = p2p_build_association_req(&info, - &ie_iov[0].iov_len); - L_WARN_ON(!ie_iov[0].iov_base); - ie_num = 1; + ie_iov[ie_num++].iov_base = req_ie; if (dev->conn_own_wfd) { ie_iov[ie_num].iov_base = wfd_ie; @@ -1564,15 +1563,11 @@ static void p2p_try_connect_group(struct p2p_device *dev) l_steal_ptr(hs); dev->conn_retry_count++; - -done: - l_free(ie_iov[0].iov_base); return; error: not_supported: p2p_connect_failed(dev); - goto done; } static void p2p_peer_provision_done(int err, struct wsc_credentials_info *creds,