Merge pull request #5779 from dgarske/compat_heap

Fixes for compatibility layer building with heap hint and OSSL callbacks
This commit is contained in:
Sean Parkinson
2022-11-08 08:59:26 +10:00
committed by GitHub
2 changed files with 16 additions and 7 deletions

View File

@@ -1804,7 +1804,7 @@ static int wolfssl_pem_write_rsa_public_key(XFILE fp, WOLFSSL_RSA* rsa,
} }
/* Dispose of DER buffer. */ /* Dispose of DER buffer. */
XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(derBuf, rsa->heap, DYNAMIC_TYPE_TMP_BUFFER);
return ret; return ret;
} }
@@ -7605,7 +7605,7 @@ static int wolfssl_dhparams_to_der(WOLFSSL_DH* dh, unsigned char** out,
if (!err) { if (!err) {
/* Use wolfSSL API to get length of DER encode DH parameters. */ /* Use wolfSSL API to get length of DER encode DH parameters. */
key = (DhKey*)dh->internal; key = (DhKey*)dh->internal;
ret = wc_DhParamsToDer(key, heap, &derSz); ret = wc_DhParamsToDer(key, NULL, &derSz);
if (ret != LENGTH_ONLY_E) { if (ret != LENGTH_ONLY_E) {
WOLFSSL_ERROR_MSG("Failed to get size of DH params"); WOLFSSL_ERROR_MSG("Failed to get size of DH params");
err = 1; err = 1;
@@ -7614,7 +7614,7 @@ static int wolfssl_dhparams_to_der(WOLFSSL_DH* dh, unsigned char** out,
if (!err) { if (!err) {
/* Allocate memory for DER encoding. */ /* Allocate memory for DER encoding. */
der = (byte*)XMALLOC(derSz, key->heap, DYNAMIC_TYPE_TMP_BUFFER); der = (byte*)XMALLOC(derSz, heap, DYNAMIC_TYPE_TMP_BUFFER);
if (der == NULL) { if (der == NULL) {
WOLFSSL_LEAVE("wolfssl_dhparams_to_der", MEMORY_E); WOLFSSL_LEAVE("wolfssl_dhparams_to_der", MEMORY_E);
err = 1; err = 1;
@@ -7631,6 +7631,10 @@ static int wolfssl_dhparams_to_der(WOLFSSL_DH* dh, unsigned char** out,
if (!err) { if (!err) {
*out = der; *out = der;
der = NULL;
}
if (der != NULL) {
XFREE(der, heap, DYNAMIC_TYPE_TMP_BUFFER);
} }
return ret; return ret;
@@ -7649,6 +7653,7 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
int ret = 1; int ret = 1;
int derSz; int derSz;
byte* derBuf = NULL; byte* derBuf = NULL;
void* heap = NULL;
WOLFSSL_ENTER("wolfSSL_PEM_write_DHparams"); WOLFSSL_ENTER("wolfSSL_PEM_write_DHparams");
@@ -7659,7 +7664,10 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
} }
if (ret == 1) { if (ret == 1) {
if ((derSz = wolfssl_dhparams_to_der(dh, &derBuf, NULL)) < 0) { DhKey* key = (DhKey*)dh->internal;
if (key)
heap = key->heap;
if ((derSz = wolfssl_dhparams_to_der(dh, &derBuf, heap)) < 0) {
WOLFSSL_ERROR_MSG("DER encoding failed"); WOLFSSL_ERROR_MSG("DER encoding failed");
ret = 0; ret = 0;
} }
@@ -7674,7 +7682,7 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
} }
/* Dispose of DER buffer. */ /* Dispose of DER buffer. */
XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER); XFREE(derBuf, heap, DYNAMIC_TYPE_TMP_BUFFER);
WOLFSSL_LEAVE("wolfSSL_PEM_write_DHparams", ret); WOLFSSL_LEAVE("wolfSSL_PEM_write_DHparams", ret);

View File

@@ -31886,10 +31886,11 @@ int wolfSSL_CRYPTO_set_mem_functions(
(wolfSSL_Realloc_cb)r) == 0) (wolfSSL_Realloc_cb)r) == 0)
return WOLFSSL_SUCCESS; return WOLFSSL_SUCCESS;
#else #else
WOLFSSL_MSG("wolfSSL was compiled without WOLFSSL_DEBUG_MEMORY. mem " WOLFSSL_MSG("wolfSSL was compiled without WOLFSSL_DEBUG_MEMORY mem "
"functions will receive a NULL file name and 0 for the " "functions will receive a NULL file name and 0 for the "
"line number."); "line number.");
if (wolfSSL_SetAllocators(OSSL_Malloc, OSSL_Free, OSSL_Realloc) == 0) { if (wolfSSL_SetAllocators((wolfSSL_Malloc_cb)OSSL_Malloc,
(wolfSSL_Free_cb)OSSL_Free, (wolfSSL_Realloc_cb)OSSL_Realloc) == 0) {
ossl_malloc = m; ossl_malloc = m;
ossl_free = f; ossl_free = f;
ossl_realloc = r; ossl_realloc = r;