X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fx509%2Fx509_vfy.c;h=3438692e57b7392f9ebedc0744c2ede30184109e;hp=1f3b2b9daba490e9b367a0f2075b5bedc08466e4;hb=895c2f84a6a083fc8b9f69f962ed19da12ce3b40;hpb=a0474357743b5cc4db1b5428ac3db85b1168d3a9 diff --git a/crypto/x509/x509_vfy.c b/crypto/x509/x509_vfy.c index 1f3b2b9dab..3438692e57 100644 --- a/crypto/x509/x509_vfy.c +++ b/crypto/x509/x509_vfy.c @@ -1505,12 +1505,12 @@ static int check_policy(X509_STORE_CTX *ctx) return 1; ret = X509_policy_check(&ctx->tree, &ctx->explicit_policy, ctx->chain, ctx->param->policies, ctx->param->flags); - if (ret == 0) { + if (ret == X509_PCY_TREE_INTERNAL) { X509err(X509_F_CHECK_POLICY, ERR_R_MALLOC_FAILURE); return 0; } /* Invalid or inconsistent extensions */ - if (ret == -1) { + if (ret == X509_PCY_TREE_INVALID) { /* * Locate certificates with bad extensions and notify callback. */ @@ -1527,11 +1527,15 @@ static int check_policy(X509_STORE_CTX *ctx) } return 1; } - if (ret == -2) { + if (ret == X509_PCY_TREE_FAILURE) { ctx->current_cert = NULL; ctx->error = X509_V_ERR_NO_EXPLICIT_POLICY; return ctx->verify_cb(0, ctx); } + if (ret != X509_PCY_TREE_VALID) { + X509err(X509_F_CHECK_POLICY, ERR_R_INTERNAL_ERROR); + return 0; + } if (ctx->param->flags & X509_V_FLAG_NOTIFY_POLICY) { ctx->current_cert = NULL;