forked from wolfSSL/wolfssl
add free of bio in error case
This commit is contained in:
24
src/ssl.c
24
src/ssl.c
@ -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;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user