Fixes for building with use of heap hint and compatibility layer. Fix for invalid OSSL callback function errors.

This commit is contained in:
David Garske 2022-11-07 10:39:06 -08:00
parent 5d70f3efce
commit 59774ae576
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. */
XFREE(derBuf, bio->heap, DYNAMIC_TYPE_TMP_BUFFER);
XFREE(derBuf, rsa->heap, DYNAMIC_TYPE_TMP_BUFFER);
return ret;
}
@ -7605,7 +7605,7 @@ static int wolfssl_dhparams_to_der(WOLFSSL_DH* dh, unsigned char** out,
if (!err) {
/* Use wolfSSL API to get length of DER encode DH parameters. */
key = (DhKey*)dh->internal;
ret = wc_DhParamsToDer(key, heap, &derSz);
ret = wc_DhParamsToDer(key, NULL, &derSz);
if (ret != LENGTH_ONLY_E) {
WOLFSSL_ERROR_MSG("Failed to get size of DH params");
err = 1;
@ -7614,7 +7614,7 @@ static int wolfssl_dhparams_to_der(WOLFSSL_DH* dh, unsigned char** out,
if (!err) {
/* 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) {
WOLFSSL_LEAVE("wolfssl_dhparams_to_der", MEMORY_E);
err = 1;
@ -7631,6 +7631,10 @@ static int wolfssl_dhparams_to_der(WOLFSSL_DH* dh, unsigned char** out,
if (!err) {
*out = der;
der = NULL;
}
if (der != NULL) {
XFREE(der, heap, DYNAMIC_TYPE_TMP_BUFFER);
}
return ret;
@ -7649,6 +7653,7 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
int ret = 1;
int derSz;
byte* derBuf = NULL;
void* heap = NULL;
WOLFSSL_ENTER("wolfSSL_PEM_write_DHparams");
@ -7659,7 +7664,10 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
}
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");
ret = 0;
}
@ -7674,7 +7682,7 @@ int wolfSSL_PEM_write_DHparams(XFILE fp, WOLFSSL_DH* dh)
}
/* 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);

View File

@ -31886,10 +31886,11 @@ int wolfSSL_CRYPTO_set_mem_functions(
(wolfSSL_Realloc_cb)r) == 0)
return WOLFSSL_SUCCESS;
#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 "
"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_free = f;
ossl_realloc = r;