---
 .../plugins/revocation/revocation_validator.c      |   15 ++++++++++++---
 1 files changed, 12 insertions(+), 3 deletions(-)


diff --git a/src/libstrongswan/plugins/revocation/revocation_validator.c b/src/libstrongswan/plugins/revocation/revocation_validator.c
index 34f347d..b5ac32e 100644
--- a/src/libstrongswan/plugins/revocation/revocation_validator.c
+++ b/src/libstrongswan/plugins/revocation/revocation_validator.c
@@ -366,7 +366,7 @@ static certificate_t *get_better_crl(certificate_t *cand, certificate_t *best,
 					bool cache, crl_t *base)
 {
 	enumerator_t *enumerator;
-	time_t revocation, valid_until;
+	time_t revocation, valid_from, valid_until, now;
 	crl_reason_t reason;
 	chunk_t serial;
 	crl_t *crl = (crl_t*)cand;
@@ -423,9 +423,10 @@ static certificate_t *get_better_crl(certificate_t *cand, certificate_t *best,
 	/* select the better of the two CRLs */
 	if (best == NULL || crl_is_newer(crl, (crl_t*)best))
 	{
+		now = time(NULL);
 		DESTROY_IF(best);
 		best = cand;
-		if (best->get_validity(best, NULL, NULL, &valid_until))
+		if (best->get_validity(best, NULL, &valid_from, &valid_until))
 		{
 			DBG1(DBG_CFG, "  crl is valid: until %T", &valid_until, FALSE);
 			*valid = VALIDATION_GOOD;
@@ -436,7 +437,15 @@ static certificate_t *get_better_crl(certificate_t *cand, certificate_t *best,
 		}
 		else
 		{
-			DBG1(DBG_CFG, "  crl is stale: since %T", &valid_until, FALSE);
+			if (now > valid_until)
+			{
+				DBG1(DBG_CFG, "  crl is stale: since %T", &valid_until, FALSE);
+			}
+			else
+			{
+				DBG1(DBG_CFG, "  crl not valid yet: valid from %T",
+						&valid_from, FALSE);
+			}
 			*valid = VALIDATION_STALE;
 		}
 	}

_______________________________________________
Dev mailing list
[email protected]
https://lists.strongswan.org/mailman/listinfo/dev

Reply via email to