static analysis tests for memory management

This commit is contained in:
Jacob Barthelmeh
2019-10-14 17:17:46 -06:00
parent c3e99e1394
commit 95c036a08a
2 changed files with 17 additions and 18 deletions

View File

@@ -898,21 +898,26 @@ int wolfSSL_i2d_OCSP_REQUEST_bio(WOLFSSL_BIO* out,
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
size = wolfSSL_i2d_OCSP_REQUEST(req, NULL); size = wolfSSL_i2d_OCSP_REQUEST(req, NULL);
if (size > 0) if (size > 0) {
data = (unsigned char*) XMALLOC(size,NULL,DYNAMIC_TYPE_TMP_BUFFER); data = (unsigned char*) XMALLOC(size, out->heap,
if (data != NULL) DYNAMIC_TYPE_TMP_BUFFER);
}
if (data != NULL) {
size = wolfSSL_i2d_OCSP_REQUEST(req, &data); size = wolfSSL_i2d_OCSP_REQUEST(req, &data);
}
if (size <= 0) { if (size <= 0) {
XFREE(data,NULL,DYNAMIC_TYPE_TMP_BUFFER); XFREE(data, out->heap, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
if (wolfSSL_BIO_write(out, data, size) == (int)size) { if (wolfSSL_BIO_write(out, data, size) == (int)size) {
XFREE(data,NULL,DYNAMIC_TYPE_TMP_BUFFER); XFREE(data, out->heap, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_SUCCESS; return WOLFSSL_SUCCESS;
} }
XFREE(data, out->heap, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_FAILURE; return WOLFSSL_FAILURE;
} }
#endif /* OPENSSL_ALL || APACHE_HTTPD */ #endif /* OPENSSL_ALL || APACHE_HTTPD */

View File

@@ -19706,7 +19706,7 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509)
x509->pubKey.length, x509->heap, x509->pubKey.length, x509->heap,
DYNAMIC_TYPE_PUBLIC_KEY); DYNAMIC_TYPE_PUBLIC_KEY);
if (key->pkey.ptr == NULL) { if (key->pkey.ptr == NULL) {
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY); wolfSSL_EVP_PKEY_free(key);
return NULL; return NULL;
} }
XMEMCPY(key->pkey.ptr, x509->pubKey.buffer, x509->pubKey.length); XMEMCPY(key->pkey.ptr, x509->pubKey.buffer, x509->pubKey.length);
@@ -19722,16 +19722,14 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509)
key->ownRsa = 1; key->ownRsa = 1;
key->rsa = wolfSSL_RSA_new(); key->rsa = wolfSSL_RSA_new();
if (key->rsa == NULL) { if (key->rsa == NULL) {
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY); wolfSSL_EVP_PKEY_free(key);
return NULL; return NULL;
} }
if (wolfSSL_RSA_LoadDer_ex(key->rsa, if (wolfSSL_RSA_LoadDer_ex(key->rsa,
(const unsigned char*)key->pkey.ptr, key->pkey_sz, (const unsigned char*)key->pkey.ptr, key->pkey_sz,
WOLFSSL_RSA_LOAD_PUBLIC) != SSL_SUCCESS) { WOLFSSL_RSA_LOAD_PUBLIC) != SSL_SUCCESS) {
wolfSSL_RSA_free(key->rsa); wolfSSL_EVP_PKEY_free(key);
key->rsa = NULL;
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
return NULL; return NULL;
} }
} }
@@ -19745,7 +19743,7 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509)
key->ownEcc = 1; key->ownEcc = 1;
key->ecc = wolfSSL_EC_KEY_new(); key->ecc = wolfSSL_EC_KEY_new();
if (key->ecc == NULL || key->ecc->internal == NULL) { if (key->ecc == NULL || key->ecc->internal == NULL) {
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY); wolfSSL_EVP_PKEY_free(key);
return NULL; return NULL;
} }
@@ -19754,17 +19752,13 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509)
if (wc_EccPublicKeyDecode((const unsigned char*)key->pkey.ptr, if (wc_EccPublicKeyDecode((const unsigned char*)key->pkey.ptr,
&idx, (ecc_key*)key->ecc->internal, key->pkey_sz) < 0) { &idx, (ecc_key*)key->ecc->internal, key->pkey_sz) < 0) {
WOLFSSL_MSG("wc_EccPublicKeyDecode failed"); WOLFSSL_MSG("wc_EccPublicKeyDecode failed");
wolfSSL_EC_KEY_free(key->ecc); wolfSSL_EVP_PKEY_free(key);
key->ecc = NULL;
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
return NULL; return NULL;
} }
if (SetECKeyExternal(key->ecc) != SSL_SUCCESS) { if (SetECKeyExternal(key->ecc) != SSL_SUCCESS) {
WOLFSSL_MSG("SetECKeyExternal failed"); WOLFSSL_MSG("SetECKeyExternal failed");
wolfSSL_EC_KEY_free(key->ecc); wolfSSL_EVP_PKEY_free(key);
key->ecc = NULL;
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
return NULL; return NULL;
} }