mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-01 03:34:39 +02:00
Fix OPENSSL_ALL build with WOLFSSL_NO_REALLOC
This commit is contained in:
12
src/bio.c
12
src/bio.c
@@ -2770,9 +2770,21 @@ int wolfSSL_BIO_flush(WOLFSSL_BIO* bio)
|
||||
}
|
||||
else {
|
||||
size_t currLen = XSTRLEN(b->ip);
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
char* tmp = NULL;
|
||||
#endif
|
||||
|
||||
if (currLen != newLen) {
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
tmp = b->ip;
|
||||
b->ip = (char*)XMALLOC(newLen+1, b->heap, DYNAMIC_TYPE_OPENSSL);
|
||||
XMEMCPY(b->ip, tmp, newLen);
|
||||
XFREE(tmp, b->heap, DYNAMIC_TYPE_OPENSSL);
|
||||
tmp = NULL;
|
||||
#else
|
||||
b->ip = (char*)XREALLOC(b->ip, newLen + 1, b->heap,
|
||||
DYNAMIC_TYPE_OPENSSL);
|
||||
#endif
|
||||
if (b->ip == NULL) {
|
||||
WOLFSSL_MSG("Hostname realloc failed.");
|
||||
return WOLFSSL_FAILURE;
|
||||
|
10
src/conf.c
10
src/conf.c
@@ -773,8 +773,18 @@ static char* expandValue(WOLFSSL_CONF *conf, const char* section,
|
||||
/* This will allocate slightly more memory than necessary
|
||||
* but better be safe */
|
||||
strLen += valueLen;
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
newRet = (char*)XMALLOC(strLen + 1, NULL,
|
||||
DYNAMIC_TYPE_OPENSSL);
|
||||
if (newRet != NULL) {
|
||||
XMEMCPY(newRet, ret, (strLen - valueLen) + 1);
|
||||
XFREE(ret, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
ret = NULL;
|
||||
}
|
||||
#else
|
||||
newRet = (char*)XREALLOC(ret, strLen + 1, NULL,
|
||||
DYNAMIC_TYPE_OPENSSL);
|
||||
#endif
|
||||
if (!newRet) {
|
||||
WOLFSSL_MSG("realloc error");
|
||||
goto expand_cleanup;
|
||||
|
@@ -39404,8 +39404,19 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
|
||||
WOLFSSL_MSG("Found session matching the session id"
|
||||
" found in the ticket");
|
||||
/* Allocate and populate an InternalTicket */
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
tmp = (byte*)XMALLOC(sizeof(InternalTicket), ssl->heap,
|
||||
DYNAMIC_TYPE_TLSX);
|
||||
if (tmp != NULL)
|
||||
{
|
||||
XMEMCPY(tmp, psk->identity, psk->identityLen);
|
||||
XFREE(psk->identity, ssl->heap, DYNAMIC_TYPE_TLSX);
|
||||
psk->identity = NULL;
|
||||
}
|
||||
#else
|
||||
tmp = (byte*)XREALLOC(psk->identity, sizeof(InternalTicket),
|
||||
ssl->heap, DYNAMIC_TYPE_TLSX);
|
||||
#endif
|
||||
if (tmp != NULL) {
|
||||
XMEMSET(tmp, 0, sizeof(InternalTicket));
|
||||
psk->identity = tmp;
|
||||
|
11
src/pk.c
11
src/pk.c
@@ -518,8 +518,19 @@ static int der_to_enc_pem_alloc(unsigned char* der, int derSz,
|
||||
byte *tmpBuf;
|
||||
|
||||
/* Add space for padding. */
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
tmpBuf = (byte*)XMALLOC((size_t)(derSz + blockSz), heap,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (tmpBuf != NULL)
|
||||
{
|
||||
XMEMCPY(tmpBuf, der, (size_t)(derSz));
|
||||
XFREE(der, heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
der = NULL;
|
||||
}
|
||||
#else
|
||||
tmpBuf = (byte*)XREALLOC(der, (size_t)(derSz + blockSz), heap,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
#endif
|
||||
if (tmpBuf == NULL) {
|
||||
WOLFSSL_ERROR_MSG("Extending DER buffer failed");
|
||||
ret = 0; /* der buffer is free'd at the end of the function */
|
||||
|
21
src/ssl.c
21
src/ssl.c
@@ -24807,8 +24807,18 @@ int wolfSSL_BUF_MEM_grow_ex(WOLFSSL_BUF_MEM* buf, size_t len,
|
||||
/* expand size, to handle growth */
|
||||
mx = (len_int + 3) / 3 * 4;
|
||||
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
tmp = (char*)XMALLOC(mx, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
if (tmp != NULL) {
|
||||
XMEMCPY(tmp, buf->data, len_int);
|
||||
XFREE(buf->data, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
buf->data = NULL;
|
||||
}
|
||||
#else
|
||||
/* use realloc */
|
||||
tmp = (char*)XREALLOC(buf->data, mx, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
#endif
|
||||
|
||||
if (tmp == NULL) {
|
||||
return 0; /* ERR_R_MALLOC_FAILURE; */
|
||||
}
|
||||
@@ -24850,7 +24860,18 @@ int wolfSSL_BUF_MEM_resize(WOLFSSL_BUF_MEM* buf, size_t len)
|
||||
mx = ((int)len + 3) / 3 * 4;
|
||||
|
||||
/* We want to shrink the internal buffer */
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
tmp = (char*)XMALLOC(mx, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
if (tmp != NULL )
|
||||
{
|
||||
XMEMCPY(tmp, buf->data, len);
|
||||
XFREE(buf->data,NULL,DYNAMIC_TYPE_OPENSSL);
|
||||
buf->data = NULL;
|
||||
}
|
||||
#else
|
||||
tmp = (char*)XREALLOC(buf->data, mx, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
#endif
|
||||
|
||||
if (tmp == NULL)
|
||||
return 0;
|
||||
|
||||
|
@@ -797,9 +797,18 @@ static int wolfssl_asn1_bit_string_grow(WOLFSSL_ASN1_BIT_STRING* bitStr,
|
||||
int ret = 1;
|
||||
byte* tmp;
|
||||
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
tmp = (byte*)XMALLOC((size_t)len, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
if (tmp != NULL) {
|
||||
XMEMCPY(tmp, bitStr->data, bitStr->length);
|
||||
XFREE(bitStr->data, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||
bitStr->data = NULL;
|
||||
}
|
||||
#else
|
||||
/* Realloc to length required. */
|
||||
tmp = (byte*)XREALLOC(bitStr->data, (size_t)len, NULL,
|
||||
DYNAMIC_TYPE_OPENSSL);
|
||||
#endif
|
||||
if (tmp == NULL) {
|
||||
ret = 0;
|
||||
}
|
||||
|
22
src/x509.c
22
src/x509.c
@@ -1181,12 +1181,24 @@ WOLFSSL_X509_EXTENSION* wolfSSL_X509_set_ext(WOLFSSL_X509* x509, int loc)
|
||||
}
|
||||
}
|
||||
|
||||
ext->obj->objSz = (unsigned int)objSz;
|
||||
if (((ext->obj->dynamic & WOLFSSL_ASN1_DYNAMIC_DATA) != 0) ||
|
||||
(ext->obj->obj == NULL)) {
|
||||
ext->obj->obj =(byte*)XREALLOC((byte*)ext->obj->obj,
|
||||
ext->obj->objSz,
|
||||
NULL,DYNAMIC_TYPE_ASN1);
|
||||
#ifdef WOLFSSL_NO_REALLOC
|
||||
byte* tmp = NULL;
|
||||
|
||||
tmp = (byte*)XMALLOC(objSz, NULL, DYNAMIC_TYPE_ASN1);
|
||||
if (tmp != NULL && ext->obj->obj != NULL) {
|
||||
XMEMCPY(tmp, ext->obj->obj, ext->obj->objSz);
|
||||
XFREE((byte*)ext->obj->obj, NULL, DYNAMIC_TYPE_ASN1);
|
||||
}
|
||||
else if (tmp == NULL) {
|
||||
ext->obj->obj = tmp;
|
||||
}
|
||||
ext->obj->obj = tmp;
|
||||
#else
|
||||
ext->obj->obj = (byte*)XREALLOC((byte*)ext->obj->obj, objSz,
|
||||
NULL, DYNAMIC_TYPE_ASN1);
|
||||
#endif
|
||||
if (ext->obj->obj == NULL) {
|
||||
wolfSSL_X509_EXTENSION_free(ext);
|
||||
FreeDecodedCert(cert);
|
||||
@@ -1201,6 +1213,8 @@ WOLFSSL_X509_EXTENSION* wolfSSL_X509_set_ext(WOLFSSL_X509* x509, int loc)
|
||||
else {
|
||||
ext->obj->dynamic &= ~WOLFSSL_ASN1_DYNAMIC_DATA;
|
||||
}
|
||||
ext->obj->objSz = (unsigned int)objSz;
|
||||
|
||||
/* Get OID from input and copy to ASN1_OBJECT buffer */
|
||||
XMEMCPY(oidBuf+2, input+idx, length);
|
||||
XMEMCPY((byte*)ext->obj->obj, oidBuf, ext->obj->objSz);
|
||||
|
@@ -76,7 +76,7 @@
|
||||
#endif
|
||||
|
||||
#ifdef OPENSSL_ALL
|
||||
#ifndef WOLFSSL_HAVE_BIO_ADDR
|
||||
#if !defined(WOLFSSL_HAVE_BIO_ADDR) && !defined(WOLFSSL_NO_SOCK)
|
||||
#define WOLFSSL_HAVE_BIO_ADDR
|
||||
#endif
|
||||
#if defined(WOLFSSL_DTLS) && !defined(WOLFSSL_DTLS_MTU)
|
||||
|
Reference in New Issue
Block a user