]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
OpenSSL: Fix memory leak in crypto_dh_derive_secret()
authorJouni Malinen <jouni@codeaurora.org>
Wed, 8 May 2019 15:53:32 +0000 (18:53 +0300)
committerJouni Malinen <j@w1.fi>
Wed, 8 May 2019 15:53:32 +0000 (18:53 +0300)
BN_clear() does not free the BIGNUM; it only clears its value. Fix this
memory leak by using the appropriate BN_clear_free() function instead.

Fixes: b11fa98bcb8a ("Add explicit checks for peer's DH public key")
Signed-off-by: Jouni Malinen <jouni@codeaurora.org>
src/crypto/crypto_openssl.c

index 633199099e68ce048e374183aec27c5037ad1b48..fb278c2d2939c394ffd621ec8fb8d6153c311078 100644 (file)
@@ -570,8 +570,8 @@ int crypto_dh_derive_secret(u8 generator, const u8 *prime, size_t prime_len,
                failed = !q || !ctx || !tmp ||
                        !BN_mod_exp(tmp, pub, q, p, ctx) ||
                        !BN_is_one(tmp);
-               BN_clear(q);
-               BN_clear(tmp);
+               BN_clear_free(q);
+               BN_clear_free(tmp);
                BN_CTX_free(ctx);
                if (failed)
                        goto fail;
@@ -580,8 +580,8 @@ int crypto_dh_derive_secret(u8 generator, const u8 *prime, size_t prime_len,
        res = crypto_mod_exp(pubkey, pubkey_len, privkey, privkey_len,
                             prime, prime_len, secret, len);
 fail:
-       BN_clear(pub);
-       BN_clear(p);
+       BN_clear_free(pub);
+       BN_clear_free(p);
        return res;
 }