diff options
Diffstat (limited to '')
-rw-r--r-- | src/regress/lib/libcrypto/x509/rfc3779/rfc3779.c | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/src/regress/lib/libcrypto/x509/rfc3779/rfc3779.c b/src/regress/lib/libcrypto/x509/rfc3779/rfc3779.c index 384d1441e4..d9b3007ac2 100644 --- a/src/regress/lib/libcrypto/x509/rfc3779/rfc3779.c +++ b/src/regress/lib/libcrypto/x509/rfc3779/rfc3779.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: rfc3779.c,v 1.5 2022/01/06 14:55:52 tb Exp $ */ | 1 | /* $OpenBSD: rfc3779.c,v 1.6 2022/01/07 22:46:05 tb Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2021 Theo Buehler <tb@openbsd.org> | 3 | * Copyright (c) 2021 Theo Buehler <tb@openbsd.org> |
4 | * | 4 | * |
@@ -471,12 +471,7 @@ struct build_addr_block_test_data { | |||
471 | int afi_len; | 471 | int afi_len; |
472 | }; | 472 | }; |
473 | 473 | ||
474 | /* | 474 | const struct build_addr_block_test_data build_addr_block_tests[] = { |
475 | * This struct isn't const since the address arguments of | ||
476 | * X509v3_addr_add_{prefix,range}() aren't const and it's | ||
477 | * not worth working around this. | ||
478 | */ | ||
479 | struct build_addr_block_test_data build_addr_block_tests[] = { | ||
480 | { | 475 | { |
481 | .description = "RFC 3779, Appendix B, example 1", | 476 | .description = "RFC 3779, Appendix B, example 1", |
482 | .addrs = { | 477 | .addrs = { |
@@ -791,15 +786,22 @@ addr_block_get_safi(const struct ip_addr_block *addr) | |||
791 | 786 | ||
792 | static int | 787 | static int |
793 | addr_block_add_ipv4_addr(IPAddrBlocks *block, enum choice_type type, | 788 | addr_block_add_ipv4_addr(IPAddrBlocks *block, enum choice_type type, |
794 | union ipv4_choice *ipv4, unsigned int *safi) | 789 | const union ipv4_choice *ipv4, unsigned int *safi) |
795 | { | 790 | { |
791 | unsigned char addr[RAW_ADDRESS_SIZE] = {0}; | ||
792 | unsigned char min[RAW_ADDRESS_SIZE]; | ||
793 | unsigned char max[RAW_ADDRESS_SIZE]; | ||
794 | |||
796 | switch (type) { | 795 | switch (type) { |
797 | case choice_prefix: | 796 | case choice_prefix: |
797 | memcpy(addr, ipv4->prefix.addr, ipv4->prefix.addr_len); | ||
798 | return X509v3_addr_add_prefix(block, IANA_AFI_IPV4, safi, | 798 | return X509v3_addr_add_prefix(block, IANA_AFI_IPV4, safi, |
799 | ipv4->prefix.addr, ipv4->prefix.prefix_len); | 799 | addr, ipv4->prefix.prefix_len); |
800 | case choice_range: | 800 | case choice_range: |
801 | memcpy(min, ipv4->range.min, sizeof(ipv4->range.min)); | ||
802 | memcpy(max, ipv4->range.max, sizeof(ipv4->range.max)); | ||
801 | return X509v3_addr_add_range(block, IANA_AFI_IPV4, safi, | 803 | return X509v3_addr_add_range(block, IANA_AFI_IPV4, safi, |
802 | ipv4->range.min, ipv4->range.max); | 804 | min, max); |
803 | case choice_inherit: | 805 | case choice_inherit: |
804 | return X509v3_addr_add_inherit(block, IANA_AFI_IPV4, safi); | 806 | return X509v3_addr_add_inherit(block, IANA_AFI_IPV4, safi); |
805 | case choice_last: | 807 | case choice_last: |
@@ -810,15 +812,22 @@ addr_block_add_ipv4_addr(IPAddrBlocks *block, enum choice_type type, | |||
810 | 812 | ||
811 | static int | 813 | static int |
812 | addr_block_add_ipv6_addr(IPAddrBlocks *block, enum choice_type type, | 814 | addr_block_add_ipv6_addr(IPAddrBlocks *block, enum choice_type type, |
813 | union ipv6_choice *ipv6, unsigned int *safi) | 815 | const union ipv6_choice *ipv6, unsigned int *safi) |
814 | { | 816 | { |
817 | unsigned char addr[RAW_ADDRESS_SIZE] = {0}; | ||
818 | unsigned char min[RAW_ADDRESS_SIZE]; | ||
819 | unsigned char max[RAW_ADDRESS_SIZE]; | ||
820 | |||
815 | switch (type) { | 821 | switch (type) { |
816 | case choice_prefix: | 822 | case choice_prefix: |
823 | memcpy(addr, ipv6->prefix.addr, ipv6->prefix.addr_len); | ||
817 | return X509v3_addr_add_prefix(block, IANA_AFI_IPV6, safi, | 824 | return X509v3_addr_add_prefix(block, IANA_AFI_IPV6, safi, |
818 | ipv6->prefix.addr, ipv6->prefix.prefix_len); | 825 | addr, ipv6->prefix.prefix_len); |
819 | case choice_range: | 826 | case choice_range: |
827 | memcpy(min, ipv6->range.min, sizeof(ipv6->range.min)); | ||
828 | memcpy(max, ipv6->range.max, sizeof(ipv6->range.max)); | ||
820 | return X509v3_addr_add_range(block, IANA_AFI_IPV6, safi, | 829 | return X509v3_addr_add_range(block, IANA_AFI_IPV6, safi, |
821 | ipv6->range.min, ipv6->range.max); | 830 | min, max); |
822 | case choice_inherit: | 831 | case choice_inherit: |
823 | return X509v3_addr_add_inherit(block, IANA_AFI_IPV6, safi); | 832 | return X509v3_addr_add_inherit(block, IANA_AFI_IPV6, safi); |
824 | case choice_last: | 833 | case choice_last: |
@@ -828,10 +837,10 @@ addr_block_add_ipv6_addr(IPAddrBlocks *block, enum choice_type type, | |||
828 | } | 837 | } |
829 | 838 | ||
830 | static int | 839 | static int |
831 | addr_block_add_addrs(IPAddrBlocks *block, struct ip_addr_block addrs[]) | 840 | addr_block_add_addrs(IPAddrBlocks *block, const struct ip_addr_block addrs[]) |
832 | { | 841 | { |
833 | struct ip_addr_block *addr; | 842 | const struct ip_addr_block *addr; |
834 | unsigned int *safi; | 843 | unsigned int *safi; |
835 | 844 | ||
836 | for (addr = &addrs[0]; addr->type != choice_last; addr++) { | 845 | for (addr = &addrs[0]; addr->type != choice_last; addr++) { |
837 | safi = addr_block_get_safi(addr); | 846 | safi = addr_block_get_safi(addr); |
@@ -856,7 +865,7 @@ addr_block_add_addrs(IPAddrBlocks *block, struct ip_addr_block addrs[]) | |||
856 | } | 865 | } |
857 | 866 | ||
858 | static int | 867 | static int |
859 | build_addr_block_test(struct build_addr_block_test_data *test) | 868 | build_addr_block_test(const struct build_addr_block_test_data *test) |
860 | { | 869 | { |
861 | IPAddrBlocks *addrs = NULL; | 870 | IPAddrBlocks *addrs = NULL; |
862 | unsigned char *out = NULL; | 871 | unsigned char *out = NULL; |