WPS: Fix a memory leak if set_ie_cb() is not set

Skip WPS IE building for Beacon and Probe Response frames is set_ie_cb()
is not set. This fixes a memory leak and optimizes operations by not
allocating memory and building the WPS IEs unnecessarily.
This commit is contained in:
Jouni Malinen 2009-12-25 01:29:59 +02:00
parent 32da61d9c9
commit 9fdeaf8f3a

View File

@ -819,9 +819,6 @@ static void wps_cb_reg_success(struct wps_registrar *reg, const u8 *mac_addr,
static int wps_cb_set_ie(struct wps_registrar *reg, struct wpabuf *beacon_ie, static int wps_cb_set_ie(struct wps_registrar *reg, struct wpabuf *beacon_ie,
struct wpabuf *probe_resp_ie) struct wpabuf *probe_resp_ie)
{ {
if (reg->set_ie_cb == NULL)
return 0;
return reg->set_ie_cb(reg->cb_ctx, beacon_ie, probe_resp_ie); return reg->set_ie_cb(reg->cb_ctx, beacon_ie, probe_resp_ie);
} }
@ -881,6 +878,9 @@ static int wps_set_ie(struct wps_registrar *reg)
struct wpabuf *beacon; struct wpabuf *beacon;
struct wpabuf *probe; struct wpabuf *probe;
if (reg->set_ie_cb == NULL)
return 0;
wpa_printf(MSG_DEBUG, "WPS: Build Beacon and Probe Response IEs"); wpa_printf(MSG_DEBUG, "WPS: Build Beacon and Probe Response IEs");
beacon = wpabuf_alloc(300); beacon = wpabuf_alloc(300);