Index: nss/lib/libpkix/pkix/checker/pkix_nameconstraintschecker.c |
=================================================================== |
--- nss/lib/libpkix/pkix/checker/pkix_nameconstraintschecker.c (revision 256695) |
+++ nss/lib/libpkix/pkix/checker/pkix_nameconstraintschecker.c (working copy) |
@@ -167,6 +167,7 @@ |
PKIX_PL_CertNameConstraints *nameConstraints = NULL; |
PKIX_PL_CertNameConstraints *mergedNameConstraints = NULL; |
PKIX_Boolean selfIssued = PKIX_FALSE; |
+ PKIX_Boolean lastCert = PKIX_FALSE; |
PKIX_ENTER(CERTCHAINCHECKER, "pkix_NameConstraintsChecker_Check"); |
PKIX_NULLCHECK_THREE(checker, cert, pNBIOContext); |
@@ -178,6 +179,7 @@ |
PKIX_CERTCHAINCHECKERGETCERTCHAINCHECKERSTATEFAILED); |
state->certsRemaining--; |
+ lastCert = state->certsRemaining == 0; |
/* Get status of self issued */ |
PKIX_CHECK(pkix_IsCertSelfIssued(cert, &selfIssued, plContext), |
@@ -185,13 +187,14 @@ |
/* Check on non self-issued and if so only for last cert */ |
if (selfIssued == PKIX_FALSE || |
- (selfIssued == PKIX_TRUE && state->certsRemaining == 0)) { |
+ (selfIssued == PKIX_TRUE && lastCert)) { |
PKIX_CHECK(PKIX_PL_Cert_CheckNameConstraints |
- (cert, state->nameConstraints, plContext), |
+ (cert, state->nameConstraints, lastCert, |
+ plContext), |
PKIX_CERTCHECKNAMECONSTRAINTSFAILED); |
} |
- if (state->certsRemaining != 0) { |
+ if (!lastCert) { |
PKIX_CHECK(PKIX_PL_Cert_GetNameConstraints |
(cert, &nameConstraints, plContext), |