summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2008-07-30 15:41:42 +0000
committerDr. Stephen Henson <steve@openssl.org>2008-07-30 15:41:42 +0000
commit592a207b94dadbd03f352e8f74133efc0a141e3d (patch)
treeae4bb9b89ee23f7741af42c7edcb1390e494c1cb /crypto
parent6bcbac0abb35992732b77912f1cdc07cf9b7adec (diff)
Policy validation fixes.
Inhibit any policy count should ignore self issued certificates. Require explicit policy is the number certificate before an explict policy is required.
Diffstat (limited to 'crypto')
-rw-r--r--crypto/x509v3/pcy_tree.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/crypto/x509v3/pcy_tree.c b/crypto/x509v3/pcy_tree.c
index 846d3eae04..c8bfa3773c 100644
--- a/crypto/x509v3/pcy_tree.c
+++ b/crypto/x509v3/pcy_tree.c
@@ -134,7 +134,7 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs,
if (!(x->ex_flags & EXFLAG_SI)
&& (cache->explicit_skip != -1)
&& (cache->explicit_skip < explicit_policy))
- explicit_policy = cache->explicit_skip;
+ explicit_policy = cache->explicit_skip + 1;
}
}
@@ -202,7 +202,8 @@ static int tree_init(X509_POLICY_TREE **ptree, STACK_OF(X509) *certs,
}
else
{
- any_skip--;
+ if (!(x->ex_flags & EXFLAG_SI))
+ any_skip--;
if ((cache->any_skip >= 0)
&& (cache->any_skip < any_skip))
any_skip = cache->any_skip;