WPS: Share a single error handling path in wps_set_ie()
Signed-off-by: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
7ed1cb8933
commit
93576264bc
1 changed files with 14 additions and 26 deletions
|
@ -1320,13 +1320,9 @@ static int wps_set_ie(struct wps_registrar *reg)
|
||||||
}
|
}
|
||||||
|
|
||||||
beacon = wpabuf_alloc(400 + vendor_len);
|
beacon = wpabuf_alloc(400 + vendor_len);
|
||||||
if (beacon == NULL)
|
|
||||||
return -1;
|
|
||||||
probe = wpabuf_alloc(500 + vendor_len);
|
probe = wpabuf_alloc(500 + vendor_len);
|
||||||
if (probe == NULL) {
|
if (!beacon || !probe)
|
||||||
wpabuf_free(beacon);
|
goto fail;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
auth_macs = wps_authorized_macs(reg, &count);
|
auth_macs = wps_authorized_macs(reg, &count);
|
||||||
|
|
||||||
|
@ -1342,19 +1338,13 @@ static int wps_set_ie(struct wps_registrar *reg)
|
||||||
(reg->dualband && wps_build_rf_bands(®->wps->dev, beacon, 0)) ||
|
(reg->dualband && wps_build_rf_bands(®->wps->dev, beacon, 0)) ||
|
||||||
wps_build_wfa_ext(beacon, 0, auth_macs, count, 0) ||
|
wps_build_wfa_ext(beacon, 0, auth_macs, count, 0) ||
|
||||||
wps_build_vendor_ext(®->wps->dev, beacon) ||
|
wps_build_vendor_ext(®->wps->dev, beacon) ||
|
||||||
wps_build_application_ext(®->wps->dev, beacon)) {
|
wps_build_application_ext(®->wps->dev, beacon))
|
||||||
wpabuf_free(beacon);
|
goto fail;
|
||||||
wpabuf_free(probe);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_P2P
|
#ifdef CONFIG_P2P
|
||||||
if (wps_build_dev_name(®->wps->dev, beacon) ||
|
if (wps_build_dev_name(®->wps->dev, beacon) ||
|
||||||
wps_build_primary_dev_type(®->wps->dev, beacon)) {
|
wps_build_primary_dev_type(®->wps->dev, beacon))
|
||||||
wpabuf_free(beacon);
|
goto fail;
|
||||||
wpabuf_free(probe);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
#endif /* CONFIG_P2P */
|
#endif /* CONFIG_P2P */
|
||||||
|
|
||||||
wpa_printf(MSG_DEBUG, "WPS: Build Probe Response IEs");
|
wpa_printf(MSG_DEBUG, "WPS: Build Probe Response IEs");
|
||||||
|
@ -1373,22 +1363,20 @@ static int wps_set_ie(struct wps_registrar *reg)
|
||||||
(reg->dualband && wps_build_rf_bands(®->wps->dev, probe, 0)) ||
|
(reg->dualband && wps_build_rf_bands(®->wps->dev, probe, 0)) ||
|
||||||
wps_build_wfa_ext(probe, 0, auth_macs, count, 0) ||
|
wps_build_wfa_ext(probe, 0, auth_macs, count, 0) ||
|
||||||
wps_build_vendor_ext(®->wps->dev, probe) ||
|
wps_build_vendor_ext(®->wps->dev, probe) ||
|
||||||
wps_build_application_ext(®->wps->dev, probe)) {
|
wps_build_application_ext(®->wps->dev, probe))
|
||||||
wpabuf_free(beacon);
|
goto fail;
|
||||||
wpabuf_free(probe);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
beacon = wps_ie_encapsulate(beacon);
|
beacon = wps_ie_encapsulate(beacon);
|
||||||
probe = wps_ie_encapsulate(probe);
|
probe = wps_ie_encapsulate(probe);
|
||||||
|
|
||||||
if (!beacon || !probe) {
|
if (!beacon || !probe)
|
||||||
wpabuf_free(beacon);
|
goto fail;
|
||||||
wpabuf_free(probe);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return wps_cb_set_ie(reg, beacon, probe);
|
return wps_cb_set_ie(reg, beacon, probe);
|
||||||
|
fail:
|
||||||
|
wpabuf_free(beacon);
|
||||||
|
wpabuf_free(probe);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue