mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 04:04:39 +02:00
fix memory management
This commit is contained in:
@@ -673,7 +673,7 @@ long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *bio, WOLFSSL_BUF_MEM **ptr)
|
|||||||
return WOLFSSL_FAILURE;
|
return WOLFSSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bio->type == WOLFSSL_BIO_FILE) {
|
if (bio->type == WOLFSSL_BIO_FILE || bio->type == WOLFSSL_BIO_SOCKET) {
|
||||||
WOLFSSL_MSG("NO memory buffer for FILE type");
|
WOLFSSL_MSG("NO memory buffer for FILE type");
|
||||||
return SSL_FAILURE;
|
return SSL_FAILURE;
|
||||||
}
|
}
|
||||||
|
@@ -12198,7 +12198,8 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
|||||||
XMEMSET(bio, 0, sizeof(WOLFSSL_BIO));
|
XMEMSET(bio, 0, sizeof(WOLFSSL_BIO));
|
||||||
bio->type = method->type;
|
bio->type = method->type;
|
||||||
bio->close = BIO_CLOSE; /* default to close things */
|
bio->close = BIO_CLOSE; /* default to close things */
|
||||||
if (method->type != WOLFSSL_BIO_FILE) {
|
if (method->type != WOLFSSL_BIO_FILE &&
|
||||||
|
method->type != WOLFSSL_BIO_SOCKET) {
|
||||||
bio->mem_buf =(WOLFSSL_BUF_MEM*)XMALLOC(sizeof(WOLFSSL_BUF_MEM),
|
bio->mem_buf =(WOLFSSL_BUF_MEM*)XMALLOC(sizeof(WOLFSSL_BUF_MEM),
|
||||||
0, DYNAMIC_TYPE_OPENSSL);
|
0, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (bio->mem_buf == NULL) {
|
if (bio->mem_buf == NULL) {
|
||||||
@@ -12239,7 +12240,7 @@ int wolfSSL_set_compression(WOLFSSL* ssl)
|
|||||||
bio->memLen = bio->wrSz = len;
|
bio->memLen = bio->wrSz = len;
|
||||||
bio->mem = (byte*)XMALLOC(len, 0, DYNAMIC_TYPE_OPENSSL);
|
bio->mem = (byte*)XMALLOC(len, 0, DYNAMIC_TYPE_OPENSSL);
|
||||||
if (bio->mem == NULL) {
|
if (bio->mem == NULL) {
|
||||||
XFREE(bio, 0, DYNAMIC_TYPE_OPENSSL);
|
wolfSSL_BIO_free(bio);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (bio->mem_buf != NULL) {
|
if (bio->mem_buf != NULL) {
|
||||||
@@ -21136,6 +21137,9 @@ int wolfSSL_RAND_egd(const char* nm)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (nm == NULL) {
|
if (nm == NULL) {
|
||||||
|
#ifdef WOLFSSL_SMALL_STACK
|
||||||
|
XFREE(buf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
|
||||||
|
#endif
|
||||||
return SSL_FATAL_ERROR;
|
return SSL_FATAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -14933,6 +14933,7 @@ static void test_wolfSSL_PEM_read_bio(void)
|
|||||||
int bytes;
|
int bytes;
|
||||||
X509* x509;
|
X509* x509;
|
||||||
BIO* bio = NULL;
|
BIO* bio = NULL;
|
||||||
|
BUF_MEM* buf;
|
||||||
|
|
||||||
printf(testingFmt, "wolfSSL_PEM_read_bio()");
|
printf(testingFmt, "wolfSSL_PEM_read_bio()");
|
||||||
|
|
||||||
@@ -14944,8 +14945,10 @@ static void test_wolfSSL_PEM_read_bio(void)
|
|||||||
AssertNotNull(bio = BIO_new_mem_buf((void*)buff, bytes));
|
AssertNotNull(bio = BIO_new_mem_buf((void*)buff, bytes));
|
||||||
AssertNotNull(x509 = PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL));
|
AssertNotNull(x509 = PEM_read_bio_X509_AUX(bio, NULL, NULL, NULL));
|
||||||
AssertIntEQ((int)BIO_set_fd(bio, 0, BIO_NOCLOSE), 1);
|
AssertIntEQ((int)BIO_set_fd(bio, 0, BIO_NOCLOSE), 1);
|
||||||
|
AssertIntEQ(SSL_SUCCESS, BIO_get_mem_ptr(bio, &buf));
|
||||||
|
|
||||||
BIO_free(bio);
|
BIO_free(bio);
|
||||||
|
BUF_MEM_free(buf);
|
||||||
X509_free(x509);
|
X509_free(x509);
|
||||||
|
|
||||||
printf(resultFmt, passed);
|
printf(resultFmt, passed);
|
||||||
|
Reference in New Issue
Block a user