diff options
-rw-r--r-- | src/lib/libcrypto/x509/x509_verify.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/lib/libcrypto/x509/x509_verify.c b/src/lib/libcrypto/x509/x509_verify.c index ca32a93e50..c212ab4e8a 100644 --- a/src/lib/libcrypto/x509/x509_verify.c +++ b/src/lib/libcrypto/x509/x509_verify.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509_verify.c,v 1.60 2022/08/05 14:46:52 beck Exp $ */ | 1 | /* $OpenBSD: x509_verify.c,v 1.60.2.1 2022/10/20 09:45:18 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2020-2021 Bob Beck <beck@openbsd.org> | 3 | * Copyright (c) 2020-2021 Bob Beck <beck@openbsd.org> |
4 | * | 4 | * |
@@ -494,6 +494,15 @@ x509_verify_ctx_add_chain(struct x509_verify_ctx *ctx, | |||
494 | if (!x509_verify_ctx_validate_legacy_chain(ctx, chain, depth)) | 494 | if (!x509_verify_ctx_validate_legacy_chain(ctx, chain, depth)) |
495 | return 0; | 495 | return 0; |
496 | 496 | ||
497 | /* Verify the leaf certificate and store any resulting error. */ | ||
498 | if (!x509_verify_cert_valid(ctx, leaf, NULL)) | ||
499 | return 0; | ||
500 | if (!x509_verify_cert_hostname(ctx, leaf, name)) | ||
501 | return 0; | ||
502 | if (ctx->error_depth == 0 && | ||
503 | ctx->error != X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY) | ||
504 | chain->cert_errors[0] = ctx->error; | ||
505 | |||
497 | /* | 506 | /* |
498 | * In the non-legacy code, extensions and purpose are dealt | 507 | * In the non-legacy code, extensions and purpose are dealt |
499 | * with as the chain is built. | 508 | * with as the chain is built. |
@@ -508,16 +517,11 @@ x509_verify_ctx_add_chain(struct x509_verify_ctx *ctx, | |||
508 | return x509_verify_cert_error(ctx, last, depth, | 517 | return x509_verify_cert_error(ctx, last, depth, |
509 | X509_V_ERR_OUT_OF_MEM, 0); | 518 | X509_V_ERR_OUT_OF_MEM, 0); |
510 | } | 519 | } |
511 | |||
512 | if (!x509_verify_cert_valid(ctx, leaf, NULL)) | ||
513 | return 0; | ||
514 | |||
515 | if (!x509_verify_cert_hostname(ctx, leaf, name)) | ||
516 | return 0; | ||
517 | |||
518 | ctx->chains_count++; | 520 | ctx->chains_count++; |
521 | |||
519 | ctx->error = X509_V_OK; | 522 | ctx->error = X509_V_OK; |
520 | ctx->error_depth = depth; | 523 | ctx->error_depth = depth; |
524 | |||
521 | return 1; | 525 | return 1; |
522 | } | 526 | } |
523 | 527 | ||