src/x509.c: fix nullPointerRedundantCheck in wolfSSL_X509V3_set_ctx(). also adds thorough WOLFSSL_MSG() coverage for failures.

This commit is contained in:
Daniel Pouzzner
2024-01-20 13:08:21 -06:00
parent d043333bee
commit 2edd18c49d

View File

@ -13848,35 +13848,50 @@ void wolfSSL_X509V3_set_ctx(WOLFSSL_X509V3_CTX* ctx, WOLFSSL_X509* issuer,
{ {
int ret = WOLFSSL_SUCCESS; int ret = WOLFSSL_SUCCESS;
WOLFSSL_ENTER("wolfSSL_X509V3_set_ctx"); WOLFSSL_ENTER("wolfSSL_X509V3_set_ctx");
if (!ctx) if (!ctx) {
return; ret = WOLFSSL_FAILURE;
WOLFSSL_MSG("wolfSSL_X509V3_set_ctx() called with null ctx.");
}
/* not checking ctx->x509 for null first since app won't have initialized if (ret == WOLFSSL_SUCCESS && (ctx->x509 != NULL)) {
* this X509V3_CTX before this function call */ ret = WOLFSSL_FAILURE;
ctx->x509 = wolfSSL_X509_new_ex(issuer->heap); WOLFSSL_MSG("wolfSSL_X509V3_set_ctx() called "
if (!ctx->x509) "with ctx->x509 already allocated.");
return; }
if (ret == WOLFSSL_SUCCESS) {
ctx->x509 = wolfSSL_X509_new_ex(
(issuer && issuer->heap) ? issuer->heap :
(subject && subject->heap) ? subject->heap :
(req && req->heap) ? req->heap :
NULL);
if (!ctx->x509) {
ret = WOLFSSL_FAILURE;
WOLFSSL_MSG("wolfSSL_X509_new_ex() failed "
"in wolfSSL_X509V3_set_ctx().");
}
}
/* Set parameters in ctx as long as ret == WOLFSSL_SUCCESS */ /* Set parameters in ctx as long as ret == WOLFSSL_SUCCESS */
if (issuer) if (ret == WOLFSSL_SUCCESS && issuer)
ret = wolfSSL_X509_set_issuer_name(ctx->x509,&issuer->issuer); ret = wolfSSL_X509_set_issuer_name(ctx->x509,&issuer->issuer);
if (subject && ret == WOLFSSL_SUCCESS) if (ret == WOLFSSL_SUCCESS && subject)
ret = wolfSSL_X509_set_subject_name(ctx->x509,&subject->subject); ret = wolfSSL_X509_set_subject_name(ctx->x509,&subject->subject);
if (req && ret == WOLFSSL_SUCCESS) { if (ret == WOLFSSL_SUCCESS && req) {
WOLFSSL_MSG("req not implemented."); WOLFSSL_MSG("req not implemented.");
} }
if (crl && ret == WOLFSSL_SUCCESS) { if (ret == WOLFSSL_SUCCESS && crl) {
WOLFSSL_MSG("crl not implemented."); WOLFSSL_MSG("crl not implemented.");
} }
if (flag && ret == WOLFSSL_SUCCESS) { if (ret == WOLFSSL_SUCCESS && flag) {
WOLFSSL_MSG("flag not implemented."); WOLFSSL_MSG("flag not implemented.");
} }
if (!ret) { if (ret != WOLFSSL_SUCCESS) {
WOLFSSL_MSG("Error setting WOLFSSL_X509V3_CTX parameters."); WOLFSSL_MSG("Error setting WOLFSSL_X509V3_CTX parameters.");
} }
} }