Parcourir la source

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.
Jouni Malinen il y a 15 ans
Parent
commit
9fdeaf8f3a
1 fichiers modifiés avec 3 ajouts et 3 suppressions
  1. 3 3
      src/wps/wps_registrar.c

+ 3 - 3
src/wps/wps_registrar.c

@@ -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,
 			 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);
 }
 
@@ -881,6 +878,9 @@ static int wps_set_ie(struct wps_registrar *reg)
 	struct wpabuf *beacon;
 	struct wpabuf *probe;
 
+	if (reg->set_ie_cb == NULL)
+		return 0;
+
 	wpa_printf(MSG_DEBUG, "WPS: Build Beacon and Probe Response IEs");
 
 	beacon = wpabuf_alloc(300);