Browse Source

WPS: Fix use of pre-configured DH keys with multiple operations

wps_build_public_key() takes the dh_ctx into use and another attempt to
use the same DH keys fails with wps->dh_ctx being set to NULL. Avoid
this by using the DH parameters only if dh_ctx is valid. This fixes
cases where a use of local pre-configured DH keys followed by an
operating using peer DH keys would faild due to unexpected attempt to
use local keys again.

Signed-hostap: Jouni Malinen <j@w1.fi>
Jouni Malinen 12 years ago
parent
commit
49e160a58d
1 changed files with 2 additions and 5 deletions
  1. 2 5
      src/wps/wps_attr_build.c

+ 2 - 5
src/wps/wps_attr_build.c

@@ -25,12 +25,9 @@ int wps_build_public_key(struct wps_data *wps, struct wpabuf *msg)
 	wpa_printf(MSG_DEBUG, "WPS:  * Public Key");
 	wpabuf_free(wps->dh_privkey);
 	wps->dh_privkey = NULL;
-	if (wps->dev_pw_id != DEV_PW_DEFAULT && wps->wps->dh_privkey) {
+	if (wps->dev_pw_id != DEV_PW_DEFAULT && wps->wps->dh_privkey &&
+	    wps->wps->dh_ctx) {
 		wpa_printf(MSG_DEBUG, "WPS: Using pre-configured DH keys");
-		if (wps->wps->dh_ctx == NULL) {
-			wpa_printf(MSG_DEBUG, "WPS: wps->wps->dh_ctx == NULL");
-			return -1;
-		}
 		if (wps->wps->dh_pubkey == NULL) {
 			wpa_printf(MSG_DEBUG,
 				   "WPS: wps->wps->dh_pubkey == NULL");