Browse Source

WPS: Aggregate deinit calls in WPS OOB

In WPS OOB, deinit_func() is called from 3 locations.
This patch aggregates these to one.
Masashi Honma 15 years ago
parent
commit
fe23eb5696
1 changed files with 9 additions and 11 deletions
  1. 9 11
      src/wps/wps_common.c

+ 9 - 11
src/wps/wps_common.c

@@ -496,25 +496,23 @@ int wps_process_oob(struct wps_context *wps, struct oob_device_data *oob_dev,
 			ret = -1;
 	} else {
 		data = oob_dev->read_func(oob_priv);
-		if (data == NULL) {
-			oob_dev->deinit_func(oob_priv);
-			return -1;
+		if (data == NULL)
+			ret = -1;
+		else {
+			if (oob_method == OOB_METHOD_CRED)
+				ret = wps_parse_oob_cred(wps, data);
+			else
+				ret = wps_parse_oob_dev_pwd(wps, data);
 		}
-
-		if (oob_method == OOB_METHOD_CRED)
-			ret = wps_parse_oob_cred(wps, data);
-		else
-			ret = wps_parse_oob_dev_pwd(wps, data);
 	}
 	wpabuf_free(data);
+	oob_dev->deinit_func(oob_priv);
+
 	if (ret < 0) {
 		wpa_printf(MSG_ERROR, "WPS: Failed to process OOB data");
-		oob_dev->deinit_func(oob_priv);
 		return -1;
 	}
 
-	oob_dev->deinit_func(oob_priv);
-
 	return 0;
 }