forked from wolfSSL/wolfssl
static analysis tests for memory management
This commit is contained in:
17
src/ocsp.c
17
src/ocsp.c
@ -898,21 +898,26 @@ int wolfSSL_i2d_OCSP_REQUEST_bio(WOLFSSL_BIO* out,
|
||||
return WOLFSSL_FAILURE;
|
||||
|
||||
size = wolfSSL_i2d_OCSP_REQUEST(req, NULL);
|
||||
if (size > 0)
|
||||
data = (unsigned char*) XMALLOC(size,NULL,DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (data != NULL)
|
||||
if (size > 0) {
|
||||
data = (unsigned char*) XMALLOC(size, out->heap,
|
||||
DYNAMIC_TYPE_TMP_BUFFER);
|
||||
}
|
||||
|
||||
if (data != NULL) {
|
||||
size = wolfSSL_i2d_OCSP_REQUEST(req, &data);
|
||||
}
|
||||
|
||||
if (size <= 0) {
|
||||
XFREE(data,NULL,DYNAMIC_TYPE_TMP_BUFFER);
|
||||
XFREE(data, out->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
return WOLFSSL_FAILURE;
|
||||
}
|
||||
|
||||
if (wolfSSL_BIO_write(out,data,size) == (int)size) {
|
||||
XFREE(data,NULL,DYNAMIC_TYPE_TMP_BUFFER);
|
||||
if (wolfSSL_BIO_write(out, data, size) == (int)size) {
|
||||
XFREE(data, out->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
return WOLFSSL_SUCCESS;
|
||||
}
|
||||
|
||||
XFREE(data, out->heap, DYNAMIC_TYPE_TMP_BUFFER);
|
||||
return WOLFSSL_FAILURE;
|
||||
}
|
||||
#endif /* OPENSSL_ALL || APACHE_HTTPD */
|
||||
|
18
src/ssl.c
18
src/ssl.c
@ -19706,7 +19706,7 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509)
|
||||
x509->pubKey.length, x509->heap,
|
||||
DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
if (key->pkey.ptr == NULL) {
|
||||
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
wolfSSL_EVP_PKEY_free(key);
|
||||
return NULL;
|
||||
}
|
||||
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->rsa = wolfSSL_RSA_new();
|
||||
if (key->rsa == NULL) {
|
||||
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
wolfSSL_EVP_PKEY_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (wolfSSL_RSA_LoadDer_ex(key->rsa,
|
||||
(const unsigned char*)key->pkey.ptr, key->pkey_sz,
|
||||
WOLFSSL_RSA_LOAD_PUBLIC) != SSL_SUCCESS) {
|
||||
wolfSSL_RSA_free(key->rsa);
|
||||
key->rsa = NULL;
|
||||
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
wolfSSL_EVP_PKEY_free(key);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
@ -19745,7 +19743,7 @@ WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509* x509)
|
||||
key->ownEcc = 1;
|
||||
key->ecc = wolfSSL_EC_KEY_new();
|
||||
if (key->ecc == NULL || key->ecc->internal == NULL) {
|
||||
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
wolfSSL_EVP_PKEY_free(key);
|
||||
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,
|
||||
&idx, (ecc_key*)key->ecc->internal, key->pkey_sz) < 0) {
|
||||
WOLFSSL_MSG("wc_EccPublicKeyDecode failed");
|
||||
wolfSSL_EC_KEY_free(key->ecc);
|
||||
key->ecc = NULL;
|
||||
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
wolfSSL_EVP_PKEY_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (SetECKeyExternal(key->ecc) != SSL_SUCCESS) {
|
||||
WOLFSSL_MSG("SetECKeyExternal failed");
|
||||
wolfSSL_EC_KEY_free(key->ecc);
|
||||
key->ecc = NULL;
|
||||
XFREE(key, x509->heap, DYNAMIC_TYPE_PUBLIC_KEY);
|
||||
wolfSSL_EVP_PKEY_free(key);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user