Memory Leak Fix
1. In `wolfSSL_d2i_DHparams()`, when setting the internal key on a WOLFSSL_KEY, set the flag inSet. 2. Not a leak, but in `wolfSSL_EVP_PKEY_set1_DH()`, only allocate one buffer to store the flat key. Saves an alloc, memcpy, and free.
This commit is contained in:
parent
61f3783111
commit
ccd096e1bb
@ -18539,6 +18539,7 @@ WOLFSSL_DH *wolfSSL_d2i_DHparams(WOLFSSL_DH **dh, const unsigned char **pp,
|
||||
wolfSSL_DH_free(newDH);
|
||||
return NULL;
|
||||
}
|
||||
newDH->inSet = 1;
|
||||
|
||||
if (SetDhExternal(newDH) != WOLFSSL_SUCCESS) {
|
||||
WOLFSSL_MSG("SetDhExternal failed");
|
||||
|
@ -5826,8 +5826,6 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key)
|
||||
word32 derSz = 0;
|
||||
byte* derBuf = NULL;
|
||||
DhKey* dhkey = NULL;
|
||||
mp_int pubKey;
|
||||
mp_int privKey;
|
||||
|
||||
WOLFSSL_ENTER("wolfSSL_EVP_PKEY_set1_DH");
|
||||
|
||||
@ -5849,11 +5847,8 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key)
|
||||
|
||||
dhkey = (DhKey*)key->internal;
|
||||
|
||||
pubKey = dhkey->pub;
|
||||
privKey = dhkey->priv;
|
||||
|
||||
havePublic = mp_unsigned_bin_size(&pubKey) > 0;
|
||||
havePrivate = mp_unsigned_bin_size(&privKey) > 0;
|
||||
havePublic = mp_unsigned_bin_size(&dhkey->pub) > 0;
|
||||
havePrivate = mp_unsigned_bin_size(&dhkey->priv) > 0;
|
||||
|
||||
/* Get size of DER buffer only */
|
||||
if (havePublic && !havePrivate) {
|
||||
@ -5891,15 +5886,8 @@ int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key)
|
||||
}
|
||||
|
||||
/* Store DH key into pkey (DER format) */
|
||||
pkey->pkey.ptr = (char*)XMALLOC(derSz, pkey->heap, DYNAMIC_TYPE_DER);
|
||||
if (pkey->pkey.ptr == NULL) {
|
||||
WOLFSSL_MSG("key malloc failed");
|
||||
XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
return WOLFSSL_FAILURE;
|
||||
}
|
||||
pkey->pkey.ptr = (char*)derBuf;
|
||||
pkey->pkey_sz = derSz;
|
||||
XMEMCPY(pkey->pkey.ptr, derBuf, derSz);
|
||||
XFREE(derBuf, pkey->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
|
||||
return WOLFSSL_SUCCESS;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user