Remove a bogus memcmp in range_should_be_prefix()
authortb <tb@openbsd.org>
Wed, 5 Jan 2022 07:47:15 +0000 (07:47 +0000)
committertb <tb@openbsd.org>
Wed, 5 Jan 2022 07:47:15 +0000 (07:47 +0000)
commit0135a380115fd92e06961eb59aa43c63c136bdba
tree6d3a5ac8c2ede9a1c93a60832284f998de2d6f2f
parent5b11d0bb5d4febd3d647e03664fcdaecbea8eb0f
Remove a bogus memcmp in range_should_be_prefix()

range_should_be_prefix() currently always fails. The reason for this
is that OpenSSL commit 42d7d7dd incorrectly moved a memcmp() out of
an assertion.  As a consequence, the library emits and accepts
incorrectly encoded ipAddrBlock extensions since it will never detect
ranges that MUST be encoded as a prefix according to RFC 3779, 2.2.3.7.

The return -1 from this memcmp() indicates to the callers that the
range should be expressed as a range, so callers must check beforehand
that min <= max to be able to fail. Thus, remove this memcmp() and
add a check to make_addressRange(), the only caller that didn't already
ensure that min <= max.

This fixes the noisy output in regress/lib/libcrypto/x509/rfc3779.

ok inoguchi jsing
lib/libcrypto/x509/x509_addr.c