From: tb Date: Tue, 28 Dec 2021 20:58:05 +0000 (+0000) Subject: Validate AFIs before sorting in X509v3_adr_canonize() X-Git-Url: http://artulab.com/gitweb/?a=commitdiff_plain;h=c719c8bc5df34c20c786ed66d003f5c914a92e60;p=openbsd Validate AFIs before sorting in X509v3_adr_canonize() Again, we're dealing with necessarily not fully validated data here, so a check up front seems prudent. ok jsing --- diff --git a/lib/libcrypto/x509/x509_addr.c b/lib/libcrypto/x509/x509_addr.c index 3686d6a8236..225f9610020 100644 --- a/lib/libcrypto/x509/x509_addr.c +++ b/lib/libcrypto/x509/x509_addr.c @@ -1,4 +1,4 @@ -/* $OpenBSD: x509_addr.c,v 1.43 2021/12/28 20:50:37 tb Exp $ */ +/* $OpenBSD: x509_addr.c,v 1.44 2021/12/28 20:58:05 tb Exp $ */ /* * Contributed to the OpenSSL Project by the American Registry for * Internet Numbers ("ARIN"). @@ -1274,10 +1274,16 @@ IPAddressOrRanges_canonize(IPAddressOrRanges *aors, const unsigned afi) int X509v3_addr_canonize(IPAddrBlocks *addr) { + unsigned int afi; int i; for (i = 0; i < sk_IPAddressFamily_num(addr); i++) { IPAddressFamily *f = sk_IPAddressFamily_value(addr, i); + + /* Check AFI/SAFI here - IPAddressFamily_cmp() can't error. */ + if ((afi = X509v3_addr_get_afi(f)) == 0) + return 0; + if (f->ipAddressChoice->type == IPAddressChoice_addressesOrRanges && !IPAddressOrRanges_canonize(f->ipAddressChoice->u.addressesOrRanges,