]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
DPP: Fix a memory leak in key pair generation
authorJouni Malinen <jouni@codeaurora.org>
Wed, 8 May 2019 15:27:06 +0000 (18:27 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 8 May 2019 15:27:06 +0000 (18:27 +0300)
ec_params needs to be free within dpp_gen_keypair() to avoid leaking the
allocated memory.

Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
src/common/dpp.c

index 8094dfa9f313655f5ad053e86d9b1d440a315c7c..fa603a9be83f535e39c64894a7e1e9679da5cc24 100644 (file)
@@ -1135,7 +1135,7 @@ static void dpp_debug_print_key(const char *title, EVP_PKEY *key)
 static EVP_PKEY * dpp_gen_keypair(const struct dpp_curve_params *curve)
 {
        EVP_PKEY_CTX *kctx = NULL;
-       EC_KEY *ec_params;
+       EC_KEY *ec_params = NULL;
        EVP_PKEY *params = NULL, *key = NULL;
        int nid;
 
@@ -1166,19 +1166,18 @@ static EVP_PKEY * dpp_gen_keypair(const struct dpp_curve_params *curve)
            EVP_PKEY_keygen_init(kctx) != 1 ||
            EVP_PKEY_keygen(kctx, &key) != 1) {
                wpa_printf(MSG_ERROR, "DPP: Failed to generate EC key");
+               key = NULL;
                goto fail;
        }
 
        if (wpa_debug_show_keys)
                dpp_debug_print_key("Own generated key", key);
 
+fail:
+       EC_KEY_free(ec_params);
        EVP_PKEY_free(params);
        EVP_PKEY_CTX_free(kctx);
        return key;
-fail:
-       EVP_PKEY_CTX_free(kctx);
-       EVP_PKEY_free(params);
-       return NULL;
 }