Simplify and explain expand_addr() a bit
authortb <tb@openbsd.org>
Tue, 28 Dec 2021 16:26:53 +0000 (16:26 +0000)
committertb <tb@openbsd.org>
Tue, 28 Dec 2021 16:26:53 +0000 (16:26 +0000)
commit91fd884c4b6c2e3cde030f739312b71fa40761ef
tree57d7bbe7eb758ac94b61891aab38a12ca40f069d
parentba91ca882d3b5aa4a82d584b18bca6e1202b7f8e
Simplify and explain expand_addr() a bit

RFC 3779 section 2.1.2 does a decent job of explaining how IP addresses
are encoded in. What's stored amounts to a prefix with all trailing zero
octets omitted. If there are trailing zero bits in the last non-zero octet,
bs->flags & 7 indicates how many. addr_expand() expands this to an address
of length 4 or 16 depending on whether we deal with IPv4 or IPv6.

Since an address can be the lower or the upper bound of a prefix or
address range, expansion needs to be able to zero-fill or one-fill the
unused bits/octets. No other expansion is ever used, so simplify the
meaning of fill accordingly. There's no need to special case the case
that there are no unused bits, the masking/filling is a noop.

ok jsing
lib/libcrypto/x509/x509_addr.c