summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortb <>2022-01-05 07:37:01 +0000
committertb <>2022-01-05 07:37:01 +0000
commit1e2931f5b7e846111974b4afe7f6d0d5b2a761f3 (patch)
treee3846205d50c87d70d3173e00d42962a3abf4c19 /src/lib
parent89929e22962d742646fea54f6a21915e111903c8 (diff)
downloadopenbsd-1e2931f5b7e846111974b4afe7f6d0d5b2a761f3.tar.gz
openbsd-1e2931f5b7e846111974b4afe7f6d0d5b2a761f3.tar.bz2
openbsd-1e2931f5b7e846111974b4afe7f6d0d5b2a761f3.zip
Polish X509v3_addr_subset() a bit
Use child and parent instead of a and b. Split unrelated checks. Use accessors and assign to local variables to avoid ugly line wrapping. Declare vriables up front instead of mixing declarations with assignments from function returns. ok inoguchi jsing
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/x509/x509_addr.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/lib/libcrypto/x509/x509_addr.c b/src/lib/libcrypto/x509/x509_addr.c
index 80260dca10..705fc7df32 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.60 2022/01/05 07:29:47 tb Exp $ */ 1/* $OpenBSD: x509_addr.c,v 1.61 2022/01/05 07:37:01 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").
@@ -1678,24 +1678,37 @@ addr_contains(IPAddressOrRanges *parent, IPAddressOrRanges *child, int length)
1678 * Test whether a is a subset of b. 1678 * Test whether a is a subset of b.
1679 */ 1679 */
1680int 1680int
1681X509v3_addr_subset(IPAddrBlocks *a, IPAddrBlocks *b) 1681X509v3_addr_subset(IPAddrBlocks *child, IPAddrBlocks *parent)
1682{ 1682{
1683 int i; 1683 IPAddressFamily *fc, *fp;
1684 if (a == NULL || a == b) 1684 IPAddressOrRanges *aorc, *aorp;
1685 int i, j, length;
1686
1687 if (child == NULL || child == parent)
1685 return 1; 1688 return 1;
1686 if (b == NULL || X509v3_addr_inherits(a) || X509v3_addr_inherits(b)) 1689 if (parent == NULL)
1690 return 0;
1691
1692 if (X509v3_addr_inherits(child) || X509v3_addr_inherits(parent))
1687 return 0; 1693 return 0;
1688 (void)sk_IPAddressFamily_set_cmp_func(b, IPAddressFamily_cmp); 1694
1689 for (i = 0; i < sk_IPAddressFamily_num(a); i++) { 1695 sk_IPAddressFamily_set_cmp_func(parent, IPAddressFamily_cmp);
1690 IPAddressFamily *fa = sk_IPAddressFamily_value(a, i); 1696
1691 int j = sk_IPAddressFamily_find(b, fa); 1697 for (i = 0; i < sk_IPAddressFamily_num(child); i++) {
1692 IPAddressFamily *fb; 1698 fc = sk_IPAddressFamily_value(child, i);
1693 fb = sk_IPAddressFamily_value(b, j); 1699
1694 if (fb == NULL) 1700 j = sk_IPAddressFamily_find(parent, fc);
1701 fp = sk_IPAddressFamily_value(parent, j);
1702 if (fp == NULL)
1695 return 0; 1703 return 0;
1696 if (!addr_contains(fb->ipAddressChoice->u.addressesOrRanges, 1704
1697 fa->ipAddressChoice->u.addressesOrRanges, 1705 if (!IPAddressFamily_afi_length(fp, &length))
1698 length_from_afi(X509v3_addr_get_afi(fb)))) 1706 return 0;
1707
1708 aorc = IPAddressFamily_addressesOrRanges(fc);
1709 aorp = IPAddressFamily_addressesOrRanges(fp);
1710
1711 if (!addr_contains(aorp, aorc, length))
1699 return 0; 1712 return 0;
1700 } 1713 }
1701 return 1; 1714 return 1;