add free of bio in error case

This commit is contained in:
Jacob Barthelmeh
2021-03-25 22:41:34 +07:00
parent 4ead19e21f
commit 9ea60db80a

View File

@ -26570,16 +26570,20 @@ WOLFSSL_API int wolfSSL_X509_load_crl_file(WOLFSSL_X509_LOOKUP *ctx,
int ret = WOLFSSL_FAILURE; int ret = WOLFSSL_FAILURE;
int count = 0; int count = 0;
WOLFSSL_BIO *bio = NULL; WOLFSSL_BIO *bio = NULL;
WOLFSSL_X509_CRL *crl =NULL; WOLFSSL_X509_CRL *crl = NULL;
WOLFSSL_ENTER("wolfSSL_X509_load_crl_file"); WOLFSSL_ENTER("wolfSSL_X509_load_crl_file");
bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file()); bio = wolfSSL_BIO_new(wolfSSL_BIO_s_file());
if (bio == NULL) {
if ((bio == NULL) || (wolfSSL_BIO_read_filename(bio, file) <= 0)) {
return ret; return ret;
} }
if (wolfSSL_BIO_read_filename(bio, file) <= 0) {
wolfSSL_BIO_free(bio);
return ret;
}
if (type == WOLFSSL_FILETYPE_PEM) { if (type == WOLFSSL_FILETYPE_PEM) {
do { do {
crl = wolfSSL_PEM_read_bio_X509_CRL(bio, NULL, NULL, NULL); crl = wolfSSL_PEM_read_bio_X509_CRL(bio, NULL, NULL, NULL);
@ -26589,7 +26593,7 @@ WOLFSSL_API int wolfSSL_X509_load_crl_file(WOLFSSL_X509_LOOKUP *ctx,
} }
break; break;
} }
ret = wolfSSL_X509_STORE_add_crl(ctx->store, crl); ret = wolfSSL_X509_STORE_add_crl(ctx->store, crl);
if (ret == WOLFSSL_FAILURE) { if (ret == WOLFSSL_FAILURE) {
WOLFSSL_MSG("Adding crl failed"); WOLFSSL_MSG("Adding crl failed");
@ -26599,7 +26603,7 @@ WOLFSSL_API int wolfSSL_X509_load_crl_file(WOLFSSL_X509_LOOKUP *ctx,
wolfSSL_X509_CRL_free(crl); wolfSSL_X509_CRL_free(crl);
crl = NULL; crl = NULL;
} while(crl == NULL); } while(crl == NULL);
ret = count; ret = count;
} else if (type == WOLFSSL_FILETYPE_ASN1) { } else if (type == WOLFSSL_FILETYPE_ASN1) {
crl = wolfSSL_d2i_X509_CRL_bio(bio, NULL); crl = wolfSSL_d2i_X509_CRL_bio(bio, NULL);
@ -26616,10 +26620,10 @@ WOLFSSL_API int wolfSSL_X509_load_crl_file(WOLFSSL_X509_LOOKUP *ctx,
} else { } else {
WOLFSSL_MSG("Invalid file type"); WOLFSSL_MSG("Invalid file type");
} }
wolfSSL_X509_CRL_free(crl); wolfSSL_X509_CRL_free(crl);
wolfSSL_BIO_free(bio); wolfSSL_BIO_free(bio);
WOLFSSL_LEAVE("wolfSSL_X509_load_crl_file", ret); WOLFSSL_LEAVE("wolfSSL_X509_load_crl_file", ret);
return ret; return ret;
} }