diff options
| author | tb <> | 2021-12-28 20:58:05 +0000 |
|---|---|---|
| committer | tb <> | 2021-12-28 20:58:05 +0000 |
| commit | 0ff7dea996f8f7fbdfbabbc87bd3372e1281afba (patch) | |
| tree | f94a4ed065de74e0bd2ad7f68ba5bee7384a9151 /src/lib/libc | |
| parent | 706e2446b3c57e60a7a920a343186b3ccbb5de1c (diff) | |
| download | openbsd-0ff7dea996f8f7fbdfbabbc87bd3372e1281afba.tar.gz openbsd-0ff7dea996f8f7fbdfbabbc87bd3372e1281afba.tar.bz2 openbsd-0ff7dea996f8f7fbdfbabbc87bd3372e1281afba.zip | |
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
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/x509/x509_addr.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/lib/libcrypto/x509/x509_addr.c b/src/lib/libcrypto/x509/x509_addr.c index 3686d6a823..225f961002 100644 --- a/src/lib/libcrypto/x509/x509_addr.c +++ b/src/lib/libcrypto/x509/x509_addr.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x509_addr.c,v 1.43 2021/12/28 20:50:37 tb Exp $ */ | 1 | /* $OpenBSD: x509_addr.c,v 1.44 2021/12/28 20:58:05 tb Exp $ */ |
| 2 | /* | 2 | /* |
| 3 | * Contributed to the OpenSSL Project by the American Registry for | 3 | * Contributed to the OpenSSL Project by the American Registry for |
| 4 | * Internet Numbers ("ARIN"). | 4 | * Internet Numbers ("ARIN"). |
| @@ -1274,10 +1274,16 @@ IPAddressOrRanges_canonize(IPAddressOrRanges *aors, const unsigned afi) | |||
| 1274 | int | 1274 | int |
| 1275 | X509v3_addr_canonize(IPAddrBlocks *addr) | 1275 | X509v3_addr_canonize(IPAddrBlocks *addr) |
| 1276 | { | 1276 | { |
| 1277 | unsigned int afi; | ||
| 1277 | int i; | 1278 | int i; |
| 1278 | 1279 | ||
| 1279 | for (i = 0; i < sk_IPAddressFamily_num(addr); i++) { | 1280 | for (i = 0; i < sk_IPAddressFamily_num(addr); i++) { |
| 1280 | IPAddressFamily *f = sk_IPAddressFamily_value(addr, i); | 1281 | IPAddressFamily *f = sk_IPAddressFamily_value(addr, i); |
| 1282 | |||
| 1283 | /* Check AFI/SAFI here - IPAddressFamily_cmp() can't error. */ | ||
| 1284 | if ((afi = X509v3_addr_get_afi(f)) == 0) | ||
| 1285 | return 0; | ||
| 1286 | |||
| 1281 | if (f->ipAddressChoice->type == | 1287 | if (f->ipAddressChoice->type == |
| 1282 | IPAddressChoice_addressesOrRanges && | 1288 | IPAddressChoice_addressesOrRanges && |
| 1283 | !IPAddressOrRanges_canonize(f->ipAddressChoice->u.addressesOrRanges, | 1289 | !IPAddressOrRanges_canonize(f->ipAddressChoice->u.addressesOrRanges, |
