Fix checks of memory caps of constraints names
authortb <tb@openbsd.org>
Fri, 12 Mar 2021 15:53:38 +0000 (15:53 +0000)
committertb <tb@openbsd.org>
Fri, 12 Mar 2021 15:53:38 +0000 (15:53 +0000)
commit42f3108a7d2860fcc392d6a69a9ad058abd50338
treefc0d662f9b8824d2f0cb3d699455c1daf354128d
parentde68f233ea846dcb700669a806c4ef226927ac87
Fix checks of memory caps of constraints names

x509_internal.h defines caps on the number of name constraints and
other names (such as subjectAltNames) that we want to allocate per
cert chain. These limits are checked too late.  In a particularly
silly cert that jan found on ugos.ugm.ac.id 443, we ended up
allocating six times 2048 x509_constraint_name structures before
deciding that these are more than 512.

Fix this by adding a names_max member to x509_constraints_names which
is set on allocation against which each addition of a name is checked.

cluebat/ok jsing
ok inoguchi on earlier version
lib/libcrypto/x509/x509_constraints.c
lib/libcrypto/x509/x509_internal.h
lib/libcrypto/x509/x509_verify.c