WPS: Aggregate deinit calls in WPS OOB
authorMasashi Honma <honma@ictec.co.jp>
Wed, 26 Aug 2009 20:34:54 +0000 (23:34 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 26 Aug 2009 20:34:54 +0000 (23:34 +0300)
In WPS OOB, deinit_func() is called from 3 locations.
This patch aggregates these to one.

src/wps/wps_common.c

index 65b7d99..7cc63e1 100644 (file)
@@ -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;
 }