Fix a bug in check_crl_time() that could result in incomplete
authorschwarze <schwarze@openbsd.org>
Sat, 13 Nov 2021 18:24:45 +0000 (18:24 +0000)
committerschwarze <schwarze@openbsd.org>
Sat, 13 Nov 2021 18:24:45 +0000 (18:24 +0000)
commit46b2c345437360dd76f5e2297c4f1b9100f2d95d
treeefcc5d74acebd1df34e29f07afe52af4fe36cbd7
parent5970a9358741ba60688cc0007b2da2a5d30355bf
Fix a bug in check_crl_time() that could result in incomplete
verification, accepting CRLs that ought to be rejected, if an unusual
combination of verification flags was specified.

If time verification was explicitly requested with
X509_V_FLAG_USE_CHECK_TIME, it was skipped on CRLs if
X509_V_FLAG_NO_CHECK_TIME was also set, even though the former is
documented to override the latter both in the OpenSSL and in the
LibreSSL X509_VERIFY_PARAM_set_flags(3) manual page.

The same bug in x509_check_cert_time() was already fixed by beck@
in rev. 1.57 on 2017/01/20.

This syncs the beginning of the function check_crl_time() with the
OpenSSL 1.1.1 branch, which is still under a free license.

OK beck@

This teaches that having too many flags and options is bad because they
breed bugs, and even more so if they are poorly designed to override
each other in surprising ways.
lib/libcrypto/x509/x509_vfy.c