Add a helper function sk_FOO_last Change-Id: Iff6e2fc9b209fb96f33af0e7ea86fe3ebba25b03 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/102850 Reviewed-by: Lily Chen <chlily@google.com> Presubmit-BoringSSL-Verified: boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com <boringssl-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: David Benjamin <davidben@google.com> Commit-Queue: Lily Chen <chlily@google.com>
diff --git a/crypto/stack/stack.cc b/crypto/stack/stack.cc index 1628c23..55ae25d 100644 --- a/crypto/stack/stack.cc +++ b/crypto/stack/stack.cc
@@ -93,6 +93,13 @@ return sk->data[i]; } +void *OPENSSL_sk_last(const OPENSSL_STACK *sk) { + if (!sk || sk->num == 0) { + return nullptr; + } + return sk->data[sk->num - 1]; +} + void *OPENSSL_sk_set(OPENSSL_STACK *sk, size_t i, void *value) { if (!sk || i >= sk->num) { return nullptr;
diff --git a/crypto/stack/stack_test.cc b/crypto/stack/stack_test.cc index 6b890d8..ade50c1 100644 --- a/crypto/stack/stack_test.cc +++ b/crypto/stack/stack_test.cc
@@ -77,6 +77,14 @@ } } + if (vec.empty()) { + EXPECT_EQ(sk_TEST_INT_last(sk), nullptr); + } else { + const TEST_INT *obj = sk_TEST_INT_last(sk); + ASSERT_TRUE(obj); + EXPECT_EQ(vec.back(), *obj); + } + // Reading out-of-bounds fails. EXPECT_FALSE(sk_TEST_INT_value(sk, vec.size())); EXPECT_FALSE(sk_TEST_INT_value(sk, vec.size() + 1));
diff --git a/crypto/x509/x509_vfy.cc b/crypto/x509/x509_vfy.cc index 9ec1d26..a1cb7f7 100644 --- a/crypto/x509/x509_vfy.cc +++ b/crypto/x509/x509_vfy.cc
@@ -182,7 +182,7 @@ // Maintain invariants: `num` is always the size of `ctx->chain` and `x` is // always the last element. int num = (int)sk_X509_num(ctx->chain); - X509 *x = sk_X509_value(ctx->chain, num - 1); + X509 *x = sk_X509_last(ctx->chain); // `param->depth` does not include the leaf certificate or the trust anchor, // so the maximum size is 2 more. int max_chain = param->depth >= INT_MAX - 2 ? INT_MAX : param->depth + 2; @@ -331,8 +331,7 @@ } num++; ctx->last_untrusted = num; - ctx->current_cert = - sk_X509_value(ctx->chain, sk_X509_num(ctx->chain) - 1); + ctx->current_cert = sk_X509_last(ctx->chain); ctx->error = X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN; }
diff --git a/include/openssl/prefix_symbols.h b/include/openssl/prefix_symbols.h index 8ae8d28..c691fc2 100644 --- a/include/openssl/prefix_symbols.h +++ b/include/openssl/prefix_symbols.h
@@ -1558,6 +1558,7 @@ #pragma redefine_extname OPENSSL_sk_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_free) #pragma redefine_extname OPENSSL_sk_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_insert) #pragma redefine_extname OPENSSL_sk_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_is_sorted) +#pragma redefine_extname OPENSSL_sk_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_last) #pragma redefine_extname OPENSSL_sk_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_new) #pragma redefine_extname OPENSSL_sk_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_new_null) #pragma redefine_extname OPENSSL_sk_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(OPENSSL_sk_num) @@ -4705,6 +4706,7 @@ #define OPENSSL_sk_free BORINGSSL_ADD_PREFIX(OPENSSL_sk_free) #define OPENSSL_sk_insert BORINGSSL_ADD_PREFIX(OPENSSL_sk_insert) #define OPENSSL_sk_is_sorted BORINGSSL_ADD_PREFIX(OPENSSL_sk_is_sorted) +#define OPENSSL_sk_last BORINGSSL_ADD_PREFIX(OPENSSL_sk_last) #define OPENSSL_sk_new BORINGSSL_ADD_PREFIX(OPENSSL_sk_new) #define OPENSSL_sk_new_null BORINGSSL_ADD_PREFIX(OPENSSL_sk_new_null) #define OPENSSL_sk_num BORINGSSL_ADD_PREFIX(OPENSSL_sk_num) @@ -6355,6 +6357,7 @@ #pragma redefine_extname sk_ACCESS_DESCRIPTION_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_free) #pragma redefine_extname sk_ACCESS_DESCRIPTION_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_insert) #pragma redefine_extname sk_ACCESS_DESCRIPTION_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_is_sorted) +#pragma redefine_extname sk_ACCESS_DESCRIPTION_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_last) #pragma redefine_extname sk_ACCESS_DESCRIPTION_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_new) #pragma redefine_extname sk_ACCESS_DESCRIPTION_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_new_null) #pragma redefine_extname sk_ACCESS_DESCRIPTION_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ACCESS_DESCRIPTION_num) @@ -6381,6 +6384,7 @@ #pragma redefine_extname sk_ASN1_INTEGER_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_free) #pragma redefine_extname sk_ASN1_INTEGER_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_insert) #pragma redefine_extname sk_ASN1_INTEGER_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_is_sorted) +#pragma redefine_extname sk_ASN1_INTEGER_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_last) #pragma redefine_extname sk_ASN1_INTEGER_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_new) #pragma redefine_extname sk_ASN1_INTEGER_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_new_null) #pragma redefine_extname sk_ASN1_INTEGER_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_INTEGER_num) @@ -6407,6 +6411,7 @@ #pragma redefine_extname sk_ASN1_OBJECT_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_free) #pragma redefine_extname sk_ASN1_OBJECT_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_insert) #pragma redefine_extname sk_ASN1_OBJECT_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_is_sorted) +#pragma redefine_extname sk_ASN1_OBJECT_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_last) #pragma redefine_extname sk_ASN1_OBJECT_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_new) #pragma redefine_extname sk_ASN1_OBJECT_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_new_null) #pragma redefine_extname sk_ASN1_OBJECT_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_OBJECT_num) @@ -6433,6 +6438,7 @@ #pragma redefine_extname sk_ASN1_TYPE_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_free) #pragma redefine_extname sk_ASN1_TYPE_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_insert) #pragma redefine_extname sk_ASN1_TYPE_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_is_sorted) +#pragma redefine_extname sk_ASN1_TYPE_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_last) #pragma redefine_extname sk_ASN1_TYPE_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_new) #pragma redefine_extname sk_ASN1_TYPE_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_new_null) #pragma redefine_extname sk_ASN1_TYPE_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_TYPE_num) @@ -6459,6 +6465,7 @@ #pragma redefine_extname sk_ASN1_VALUE_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_free) #pragma redefine_extname sk_ASN1_VALUE_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_insert) #pragma redefine_extname sk_ASN1_VALUE_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_is_sorted) +#pragma redefine_extname sk_ASN1_VALUE_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_last) #pragma redefine_extname sk_ASN1_VALUE_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_new) #pragma redefine_extname sk_ASN1_VALUE_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_new_null) #pragma redefine_extname sk_ASN1_VALUE_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_ASN1_VALUE_num) @@ -6485,6 +6492,7 @@ #pragma redefine_extname sk_BIO_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_free) #pragma redefine_extname sk_BIO_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_insert) #pragma redefine_extname sk_BIO_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_is_sorted) +#pragma redefine_extname sk_BIO_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_last) #pragma redefine_extname sk_BIO_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_new) #pragma redefine_extname sk_BIO_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_new_null) #pragma redefine_extname sk_BIO_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_BIO_num) @@ -6511,6 +6519,7 @@ #pragma redefine_extname sk_CONF_VALUE_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_free) #pragma redefine_extname sk_CONF_VALUE_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_insert) #pragma redefine_extname sk_CONF_VALUE_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_is_sorted) +#pragma redefine_extname sk_CONF_VALUE_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_last) #pragma redefine_extname sk_CONF_VALUE_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_new) #pragma redefine_extname sk_CONF_VALUE_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_new_null) #pragma redefine_extname sk_CONF_VALUE_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CONF_VALUE_num) @@ -6537,6 +6546,7 @@ #pragma redefine_extname sk_CRYPTO_BUFFER_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_free) #pragma redefine_extname sk_CRYPTO_BUFFER_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_insert) #pragma redefine_extname sk_CRYPTO_BUFFER_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_is_sorted) +#pragma redefine_extname sk_CRYPTO_BUFFER_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_last) #pragma redefine_extname sk_CRYPTO_BUFFER_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_new) #pragma redefine_extname sk_CRYPTO_BUFFER_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_new_null) #pragma redefine_extname sk_CRYPTO_BUFFER_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_CRYPTO_BUFFER_num) @@ -6563,6 +6573,7 @@ #pragma redefine_extname sk_DIST_POINT_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_free) #pragma redefine_extname sk_DIST_POINT_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_insert) #pragma redefine_extname sk_DIST_POINT_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_is_sorted) +#pragma redefine_extname sk_DIST_POINT_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_last) #pragma redefine_extname sk_DIST_POINT_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_new) #pragma redefine_extname sk_DIST_POINT_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_new_null) #pragma redefine_extname sk_DIST_POINT_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_DIST_POINT_num) @@ -6589,6 +6600,7 @@ #pragma redefine_extname sk_GENERAL_NAME_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_free) #pragma redefine_extname sk_GENERAL_NAME_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_insert) #pragma redefine_extname sk_GENERAL_NAME_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_is_sorted) +#pragma redefine_extname sk_GENERAL_NAME_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_last) #pragma redefine_extname sk_GENERAL_NAME_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_new) #pragma redefine_extname sk_GENERAL_NAME_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_new_null) #pragma redefine_extname sk_GENERAL_NAME_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_NAME_num) @@ -6615,6 +6627,7 @@ #pragma redefine_extname sk_GENERAL_SUBTREE_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_free) #pragma redefine_extname sk_GENERAL_SUBTREE_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_insert) #pragma redefine_extname sk_GENERAL_SUBTREE_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_is_sorted) +#pragma redefine_extname sk_GENERAL_SUBTREE_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_last) #pragma redefine_extname sk_GENERAL_SUBTREE_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_new) #pragma redefine_extname sk_GENERAL_SUBTREE_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_new_null) #pragma redefine_extname sk_GENERAL_SUBTREE_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_GENERAL_SUBTREE_num) @@ -6641,6 +6654,7 @@ #pragma redefine_extname sk_OPENSSL_STRING_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_free) #pragma redefine_extname sk_OPENSSL_STRING_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_insert) #pragma redefine_extname sk_OPENSSL_STRING_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_is_sorted) +#pragma redefine_extname sk_OPENSSL_STRING_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_last) #pragma redefine_extname sk_OPENSSL_STRING_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_new) #pragma redefine_extname sk_OPENSSL_STRING_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_new_null) #pragma redefine_extname sk_OPENSSL_STRING_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_OPENSSL_STRING_num) @@ -6667,6 +6681,7 @@ #pragma redefine_extname sk_POLICYINFO_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_free) #pragma redefine_extname sk_POLICYINFO_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_insert) #pragma redefine_extname sk_POLICYINFO_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_is_sorted) +#pragma redefine_extname sk_POLICYINFO_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_last) #pragma redefine_extname sk_POLICYINFO_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_new) #pragma redefine_extname sk_POLICYINFO_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_new_null) #pragma redefine_extname sk_POLICYINFO_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYINFO_num) @@ -6693,6 +6708,7 @@ #pragma redefine_extname sk_POLICYQUALINFO_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_free) #pragma redefine_extname sk_POLICYQUALINFO_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_insert) #pragma redefine_extname sk_POLICYQUALINFO_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_is_sorted) +#pragma redefine_extname sk_POLICYQUALINFO_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_last) #pragma redefine_extname sk_POLICYQUALINFO_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_new) #pragma redefine_extname sk_POLICYQUALINFO_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_new_null) #pragma redefine_extname sk_POLICYQUALINFO_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICYQUALINFO_num) @@ -6719,6 +6735,7 @@ #pragma redefine_extname sk_POLICY_MAPPING_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_free) #pragma redefine_extname sk_POLICY_MAPPING_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_insert) #pragma redefine_extname sk_POLICY_MAPPING_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_is_sorted) +#pragma redefine_extname sk_POLICY_MAPPING_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_last) #pragma redefine_extname sk_POLICY_MAPPING_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_new) #pragma redefine_extname sk_POLICY_MAPPING_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_new_null) #pragma redefine_extname sk_POLICY_MAPPING_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_POLICY_MAPPING_num) @@ -6745,6 +6762,7 @@ #pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_free) #pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_insert) #pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_is_sorted) +#pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_last) #pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_new) #pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_new_null) #pragma redefine_extname sk_SRTP_PROTECTION_PROFILE_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SRTP_PROTECTION_PROFILE_num) @@ -6771,6 +6789,7 @@ #pragma redefine_extname sk_SSL_CIPHER_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_free) #pragma redefine_extname sk_SSL_CIPHER_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_insert) #pragma redefine_extname sk_SSL_CIPHER_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_is_sorted) +#pragma redefine_extname sk_SSL_CIPHER_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_last) #pragma redefine_extname sk_SSL_CIPHER_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_new) #pragma redefine_extname sk_SSL_CIPHER_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_new_null) #pragma redefine_extname sk_SSL_CIPHER_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_CIPHER_num) @@ -6797,6 +6816,7 @@ #pragma redefine_extname sk_SSL_COMP_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_free) #pragma redefine_extname sk_SSL_COMP_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_insert) #pragma redefine_extname sk_SSL_COMP_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_is_sorted) +#pragma redefine_extname sk_SSL_COMP_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_last) #pragma redefine_extname sk_SSL_COMP_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_new) #pragma redefine_extname sk_SSL_COMP_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_new_null) #pragma redefine_extname sk_SSL_COMP_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_SSL_COMP_num) @@ -6823,6 +6843,7 @@ #pragma redefine_extname sk_TRUST_TOKEN_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_free) #pragma redefine_extname sk_TRUST_TOKEN_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_insert) #pragma redefine_extname sk_TRUST_TOKEN_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_is_sorted) +#pragma redefine_extname sk_TRUST_TOKEN_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_last) #pragma redefine_extname sk_TRUST_TOKEN_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_new) #pragma redefine_extname sk_TRUST_TOKEN_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_new_null) #pragma redefine_extname sk_TRUST_TOKEN_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_TRUST_TOKEN_num) @@ -6849,6 +6870,7 @@ #pragma redefine_extname sk_X509_ALGOR_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_free) #pragma redefine_extname sk_X509_ALGOR_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_insert) #pragma redefine_extname sk_X509_ALGOR_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_is_sorted) +#pragma redefine_extname sk_X509_ALGOR_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_last) #pragma redefine_extname sk_X509_ALGOR_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_new) #pragma redefine_extname sk_X509_ALGOR_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_new_null) #pragma redefine_extname sk_X509_ALGOR_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ALGOR_num) @@ -6875,6 +6897,7 @@ #pragma redefine_extname sk_X509_ATTRIBUTE_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_free) #pragma redefine_extname sk_X509_ATTRIBUTE_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_insert) #pragma redefine_extname sk_X509_ATTRIBUTE_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_is_sorted) +#pragma redefine_extname sk_X509_ATTRIBUTE_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_last) #pragma redefine_extname sk_X509_ATTRIBUTE_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_new) #pragma redefine_extname sk_X509_ATTRIBUTE_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_new_null) #pragma redefine_extname sk_X509_ATTRIBUTE_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_ATTRIBUTE_num) @@ -6901,6 +6924,7 @@ #pragma redefine_extname sk_X509_CRL_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_free) #pragma redefine_extname sk_X509_CRL_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_insert) #pragma redefine_extname sk_X509_CRL_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_is_sorted) +#pragma redefine_extname sk_X509_CRL_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_last) #pragma redefine_extname sk_X509_CRL_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_new) #pragma redefine_extname sk_X509_CRL_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_new_null) #pragma redefine_extname sk_X509_CRL_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_CRL_num) @@ -6927,6 +6951,7 @@ #pragma redefine_extname sk_X509_EXTENSION_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_free) #pragma redefine_extname sk_X509_EXTENSION_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_insert) #pragma redefine_extname sk_X509_EXTENSION_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_is_sorted) +#pragma redefine_extname sk_X509_EXTENSION_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_last) #pragma redefine_extname sk_X509_EXTENSION_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_new) #pragma redefine_extname sk_X509_EXTENSION_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_new_null) #pragma redefine_extname sk_X509_EXTENSION_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_EXTENSION_num) @@ -6953,6 +6978,7 @@ #pragma redefine_extname sk_X509_INFO_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_free) #pragma redefine_extname sk_X509_INFO_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_insert) #pragma redefine_extname sk_X509_INFO_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_is_sorted) +#pragma redefine_extname sk_X509_INFO_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_last) #pragma redefine_extname sk_X509_INFO_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_new) #pragma redefine_extname sk_X509_INFO_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_new_null) #pragma redefine_extname sk_X509_INFO_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_INFO_num) @@ -6979,6 +7005,7 @@ #pragma redefine_extname sk_X509_NAME_ENTRY_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_free) #pragma redefine_extname sk_X509_NAME_ENTRY_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_insert) #pragma redefine_extname sk_X509_NAME_ENTRY_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_is_sorted) +#pragma redefine_extname sk_X509_NAME_ENTRY_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_last) #pragma redefine_extname sk_X509_NAME_ENTRY_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_new) #pragma redefine_extname sk_X509_NAME_ENTRY_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_new_null) #pragma redefine_extname sk_X509_NAME_ENTRY_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_ENTRY_num) @@ -7005,6 +7032,7 @@ #pragma redefine_extname sk_X509_NAME_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_free) #pragma redefine_extname sk_X509_NAME_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_insert) #pragma redefine_extname sk_X509_NAME_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_is_sorted) +#pragma redefine_extname sk_X509_NAME_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_last) #pragma redefine_extname sk_X509_NAME_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_new) #pragma redefine_extname sk_X509_NAME_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_new_null) #pragma redefine_extname sk_X509_NAME_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_NAME_num) @@ -7031,6 +7059,7 @@ #pragma redefine_extname sk_X509_OBJECT_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_free) #pragma redefine_extname sk_X509_OBJECT_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_insert) #pragma redefine_extname sk_X509_OBJECT_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_is_sorted) +#pragma redefine_extname sk_X509_OBJECT_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_last) #pragma redefine_extname sk_X509_OBJECT_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_new) #pragma redefine_extname sk_X509_OBJECT_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_new_null) #pragma redefine_extname sk_X509_OBJECT_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_OBJECT_num) @@ -7057,6 +7086,7 @@ #pragma redefine_extname sk_X509_REVOKED_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_free) #pragma redefine_extname sk_X509_REVOKED_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_insert) #pragma redefine_extname sk_X509_REVOKED_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_is_sorted) +#pragma redefine_extname sk_X509_REVOKED_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_last) #pragma redefine_extname sk_X509_REVOKED_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_new) #pragma redefine_extname sk_X509_REVOKED_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_new_null) #pragma redefine_extname sk_X509_REVOKED_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_REVOKED_num) @@ -7083,6 +7113,7 @@ #pragma redefine_extname sk_X509_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_free) #pragma redefine_extname sk_X509_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_insert) #pragma redefine_extname sk_X509_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_is_sorted) +#pragma redefine_extname sk_X509_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_last) #pragma redefine_extname sk_X509_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_new) #pragma redefine_extname sk_X509_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_new_null) #pragma redefine_extname sk_X509_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_X509_num) @@ -7109,6 +7140,7 @@ #pragma redefine_extname sk_void_free BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_free) #pragma redefine_extname sk_void_insert BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_insert) #pragma redefine_extname sk_void_is_sorted BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_is_sorted) +#pragma redefine_extname sk_void_last BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_last) #pragma redefine_extname sk_void_new BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_new) #pragma redefine_extname sk_void_new_null BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_new_null) #pragma redefine_extname sk_void_num BORINGSSL_ADD_USER_LABEL_AND_PREFIX(sk_void_num) @@ -7145,6 +7177,7 @@ #define sk_ACCESS_DESCRIPTION_free BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_free) #define sk_ACCESS_DESCRIPTION_insert BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_insert) #define sk_ACCESS_DESCRIPTION_is_sorted BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_is_sorted) +#define sk_ACCESS_DESCRIPTION_last BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_last) #define sk_ACCESS_DESCRIPTION_new BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_new) #define sk_ACCESS_DESCRIPTION_new_null BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_new_null) #define sk_ACCESS_DESCRIPTION_num BORINGSSL_ADD_PREFIX(sk_ACCESS_DESCRIPTION_num) @@ -7171,6 +7204,7 @@ #define sk_ASN1_INTEGER_free BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_free) #define sk_ASN1_INTEGER_insert BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_insert) #define sk_ASN1_INTEGER_is_sorted BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_is_sorted) +#define sk_ASN1_INTEGER_last BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_last) #define sk_ASN1_INTEGER_new BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_new) #define sk_ASN1_INTEGER_new_null BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_new_null) #define sk_ASN1_INTEGER_num BORINGSSL_ADD_PREFIX(sk_ASN1_INTEGER_num) @@ -7197,6 +7231,7 @@ #define sk_ASN1_OBJECT_free BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_free) #define sk_ASN1_OBJECT_insert BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_insert) #define sk_ASN1_OBJECT_is_sorted BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_is_sorted) +#define sk_ASN1_OBJECT_last BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_last) #define sk_ASN1_OBJECT_new BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_new) #define sk_ASN1_OBJECT_new_null BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_new_null) #define sk_ASN1_OBJECT_num BORINGSSL_ADD_PREFIX(sk_ASN1_OBJECT_num) @@ -7223,6 +7258,7 @@ #define sk_ASN1_TYPE_free BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_free) #define sk_ASN1_TYPE_insert BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_insert) #define sk_ASN1_TYPE_is_sorted BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_is_sorted) +#define sk_ASN1_TYPE_last BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_last) #define sk_ASN1_TYPE_new BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_new) #define sk_ASN1_TYPE_new_null BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_new_null) #define sk_ASN1_TYPE_num BORINGSSL_ADD_PREFIX(sk_ASN1_TYPE_num) @@ -7249,6 +7285,7 @@ #define sk_ASN1_VALUE_free BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_free) #define sk_ASN1_VALUE_insert BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_insert) #define sk_ASN1_VALUE_is_sorted BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_is_sorted) +#define sk_ASN1_VALUE_last BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_last) #define sk_ASN1_VALUE_new BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_new) #define sk_ASN1_VALUE_new_null BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_new_null) #define sk_ASN1_VALUE_num BORINGSSL_ADD_PREFIX(sk_ASN1_VALUE_num) @@ -7275,6 +7312,7 @@ #define sk_BIO_free BORINGSSL_ADD_PREFIX(sk_BIO_free) #define sk_BIO_insert BORINGSSL_ADD_PREFIX(sk_BIO_insert) #define sk_BIO_is_sorted BORINGSSL_ADD_PREFIX(sk_BIO_is_sorted) +#define sk_BIO_last BORINGSSL_ADD_PREFIX(sk_BIO_last) #define sk_BIO_new BORINGSSL_ADD_PREFIX(sk_BIO_new) #define sk_BIO_new_null BORINGSSL_ADD_PREFIX(sk_BIO_new_null) #define sk_BIO_num BORINGSSL_ADD_PREFIX(sk_BIO_num) @@ -7301,6 +7339,7 @@ #define sk_CONF_VALUE_free BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_free) #define sk_CONF_VALUE_insert BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_insert) #define sk_CONF_VALUE_is_sorted BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_is_sorted) +#define sk_CONF_VALUE_last BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_last) #define sk_CONF_VALUE_new BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_new) #define sk_CONF_VALUE_new_null BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_new_null) #define sk_CONF_VALUE_num BORINGSSL_ADD_PREFIX(sk_CONF_VALUE_num) @@ -7327,6 +7366,7 @@ #define sk_CRYPTO_BUFFER_free BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_free) #define sk_CRYPTO_BUFFER_insert BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_insert) #define sk_CRYPTO_BUFFER_is_sorted BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_is_sorted) +#define sk_CRYPTO_BUFFER_last BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_last) #define sk_CRYPTO_BUFFER_new BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_new) #define sk_CRYPTO_BUFFER_new_null BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_new_null) #define sk_CRYPTO_BUFFER_num BORINGSSL_ADD_PREFIX(sk_CRYPTO_BUFFER_num) @@ -7353,6 +7393,7 @@ #define sk_DIST_POINT_free BORINGSSL_ADD_PREFIX(sk_DIST_POINT_free) #define sk_DIST_POINT_insert BORINGSSL_ADD_PREFIX(sk_DIST_POINT_insert) #define sk_DIST_POINT_is_sorted BORINGSSL_ADD_PREFIX(sk_DIST_POINT_is_sorted) +#define sk_DIST_POINT_last BORINGSSL_ADD_PREFIX(sk_DIST_POINT_last) #define sk_DIST_POINT_new BORINGSSL_ADD_PREFIX(sk_DIST_POINT_new) #define sk_DIST_POINT_new_null BORINGSSL_ADD_PREFIX(sk_DIST_POINT_new_null) #define sk_DIST_POINT_num BORINGSSL_ADD_PREFIX(sk_DIST_POINT_num) @@ -7379,6 +7420,7 @@ #define sk_GENERAL_NAME_free BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_free) #define sk_GENERAL_NAME_insert BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_insert) #define sk_GENERAL_NAME_is_sorted BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_is_sorted) +#define sk_GENERAL_NAME_last BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_last) #define sk_GENERAL_NAME_new BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_new) #define sk_GENERAL_NAME_new_null BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_new_null) #define sk_GENERAL_NAME_num BORINGSSL_ADD_PREFIX(sk_GENERAL_NAME_num) @@ -7405,6 +7447,7 @@ #define sk_GENERAL_SUBTREE_free BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_free) #define sk_GENERAL_SUBTREE_insert BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_insert) #define sk_GENERAL_SUBTREE_is_sorted BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_is_sorted) +#define sk_GENERAL_SUBTREE_last BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_last) #define sk_GENERAL_SUBTREE_new BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_new) #define sk_GENERAL_SUBTREE_new_null BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_new_null) #define sk_GENERAL_SUBTREE_num BORINGSSL_ADD_PREFIX(sk_GENERAL_SUBTREE_num) @@ -7431,6 +7474,7 @@ #define sk_OPENSSL_STRING_free BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_free) #define sk_OPENSSL_STRING_insert BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_insert) #define sk_OPENSSL_STRING_is_sorted BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_is_sorted) +#define sk_OPENSSL_STRING_last BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_last) #define sk_OPENSSL_STRING_new BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_new) #define sk_OPENSSL_STRING_new_null BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_new_null) #define sk_OPENSSL_STRING_num BORINGSSL_ADD_PREFIX(sk_OPENSSL_STRING_num) @@ -7457,6 +7501,7 @@ #define sk_POLICYINFO_free BORINGSSL_ADD_PREFIX(sk_POLICYINFO_free) #define sk_POLICYINFO_insert BORINGSSL_ADD_PREFIX(sk_POLICYINFO_insert) #define sk_POLICYINFO_is_sorted BORINGSSL_ADD_PREFIX(sk_POLICYINFO_is_sorted) +#define sk_POLICYINFO_last BORINGSSL_ADD_PREFIX(sk_POLICYINFO_last) #define sk_POLICYINFO_new BORINGSSL_ADD_PREFIX(sk_POLICYINFO_new) #define sk_POLICYINFO_new_null BORINGSSL_ADD_PREFIX(sk_POLICYINFO_new_null) #define sk_POLICYINFO_num BORINGSSL_ADD_PREFIX(sk_POLICYINFO_num) @@ -7483,6 +7528,7 @@ #define sk_POLICYQUALINFO_free BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_free) #define sk_POLICYQUALINFO_insert BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_insert) #define sk_POLICYQUALINFO_is_sorted BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_is_sorted) +#define sk_POLICYQUALINFO_last BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_last) #define sk_POLICYQUALINFO_new BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_new) #define sk_POLICYQUALINFO_new_null BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_new_null) #define sk_POLICYQUALINFO_num BORINGSSL_ADD_PREFIX(sk_POLICYQUALINFO_num) @@ -7509,6 +7555,7 @@ #define sk_POLICY_MAPPING_free BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_free) #define sk_POLICY_MAPPING_insert BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_insert) #define sk_POLICY_MAPPING_is_sorted BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_is_sorted) +#define sk_POLICY_MAPPING_last BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_last) #define sk_POLICY_MAPPING_new BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_new) #define sk_POLICY_MAPPING_new_null BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_new_null) #define sk_POLICY_MAPPING_num BORINGSSL_ADD_PREFIX(sk_POLICY_MAPPING_num) @@ -7535,6 +7582,7 @@ #define sk_SRTP_PROTECTION_PROFILE_free BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_free) #define sk_SRTP_PROTECTION_PROFILE_insert BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_insert) #define sk_SRTP_PROTECTION_PROFILE_is_sorted BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_is_sorted) +#define sk_SRTP_PROTECTION_PROFILE_last BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_last) #define sk_SRTP_PROTECTION_PROFILE_new BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_new) #define sk_SRTP_PROTECTION_PROFILE_new_null BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_new_null) #define sk_SRTP_PROTECTION_PROFILE_num BORINGSSL_ADD_PREFIX(sk_SRTP_PROTECTION_PROFILE_num) @@ -7561,6 +7609,7 @@ #define sk_SSL_CIPHER_free BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_free) #define sk_SSL_CIPHER_insert BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_insert) #define sk_SSL_CIPHER_is_sorted BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_is_sorted) +#define sk_SSL_CIPHER_last BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_last) #define sk_SSL_CIPHER_new BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_new) #define sk_SSL_CIPHER_new_null BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_new_null) #define sk_SSL_CIPHER_num BORINGSSL_ADD_PREFIX(sk_SSL_CIPHER_num) @@ -7587,6 +7636,7 @@ #define sk_SSL_COMP_free BORINGSSL_ADD_PREFIX(sk_SSL_COMP_free) #define sk_SSL_COMP_insert BORINGSSL_ADD_PREFIX(sk_SSL_COMP_insert) #define sk_SSL_COMP_is_sorted BORINGSSL_ADD_PREFIX(sk_SSL_COMP_is_sorted) +#define sk_SSL_COMP_last BORINGSSL_ADD_PREFIX(sk_SSL_COMP_last) #define sk_SSL_COMP_new BORINGSSL_ADD_PREFIX(sk_SSL_COMP_new) #define sk_SSL_COMP_new_null BORINGSSL_ADD_PREFIX(sk_SSL_COMP_new_null) #define sk_SSL_COMP_num BORINGSSL_ADD_PREFIX(sk_SSL_COMP_num) @@ -7613,6 +7663,7 @@ #define sk_TRUST_TOKEN_free BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_free) #define sk_TRUST_TOKEN_insert BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_insert) #define sk_TRUST_TOKEN_is_sorted BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_is_sorted) +#define sk_TRUST_TOKEN_last BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_last) #define sk_TRUST_TOKEN_new BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_new) #define sk_TRUST_TOKEN_new_null BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_new_null) #define sk_TRUST_TOKEN_num BORINGSSL_ADD_PREFIX(sk_TRUST_TOKEN_num) @@ -7639,6 +7690,7 @@ #define sk_X509_ALGOR_free BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_free) #define sk_X509_ALGOR_insert BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_insert) #define sk_X509_ALGOR_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_is_sorted) +#define sk_X509_ALGOR_last BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_last) #define sk_X509_ALGOR_new BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_new) #define sk_X509_ALGOR_new_null BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_new_null) #define sk_X509_ALGOR_num BORINGSSL_ADD_PREFIX(sk_X509_ALGOR_num) @@ -7665,6 +7717,7 @@ #define sk_X509_ATTRIBUTE_free BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_free) #define sk_X509_ATTRIBUTE_insert BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_insert) #define sk_X509_ATTRIBUTE_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_is_sorted) +#define sk_X509_ATTRIBUTE_last BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_last) #define sk_X509_ATTRIBUTE_new BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_new) #define sk_X509_ATTRIBUTE_new_null BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_new_null) #define sk_X509_ATTRIBUTE_num BORINGSSL_ADD_PREFIX(sk_X509_ATTRIBUTE_num) @@ -7691,6 +7744,7 @@ #define sk_X509_CRL_free BORINGSSL_ADD_PREFIX(sk_X509_CRL_free) #define sk_X509_CRL_insert BORINGSSL_ADD_PREFIX(sk_X509_CRL_insert) #define sk_X509_CRL_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_CRL_is_sorted) +#define sk_X509_CRL_last BORINGSSL_ADD_PREFIX(sk_X509_CRL_last) #define sk_X509_CRL_new BORINGSSL_ADD_PREFIX(sk_X509_CRL_new) #define sk_X509_CRL_new_null BORINGSSL_ADD_PREFIX(sk_X509_CRL_new_null) #define sk_X509_CRL_num BORINGSSL_ADD_PREFIX(sk_X509_CRL_num) @@ -7717,6 +7771,7 @@ #define sk_X509_EXTENSION_free BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_free) #define sk_X509_EXTENSION_insert BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_insert) #define sk_X509_EXTENSION_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_is_sorted) +#define sk_X509_EXTENSION_last BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_last) #define sk_X509_EXTENSION_new BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_new) #define sk_X509_EXTENSION_new_null BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_new_null) #define sk_X509_EXTENSION_num BORINGSSL_ADD_PREFIX(sk_X509_EXTENSION_num) @@ -7743,6 +7798,7 @@ #define sk_X509_INFO_free BORINGSSL_ADD_PREFIX(sk_X509_INFO_free) #define sk_X509_INFO_insert BORINGSSL_ADD_PREFIX(sk_X509_INFO_insert) #define sk_X509_INFO_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_INFO_is_sorted) +#define sk_X509_INFO_last BORINGSSL_ADD_PREFIX(sk_X509_INFO_last) #define sk_X509_INFO_new BORINGSSL_ADD_PREFIX(sk_X509_INFO_new) #define sk_X509_INFO_new_null BORINGSSL_ADD_PREFIX(sk_X509_INFO_new_null) #define sk_X509_INFO_num BORINGSSL_ADD_PREFIX(sk_X509_INFO_num) @@ -7769,6 +7825,7 @@ #define sk_X509_NAME_ENTRY_free BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_free) #define sk_X509_NAME_ENTRY_insert BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_insert) #define sk_X509_NAME_ENTRY_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_is_sorted) +#define sk_X509_NAME_ENTRY_last BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_last) #define sk_X509_NAME_ENTRY_new BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_new) #define sk_X509_NAME_ENTRY_new_null BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_new_null) #define sk_X509_NAME_ENTRY_num BORINGSSL_ADD_PREFIX(sk_X509_NAME_ENTRY_num) @@ -7795,6 +7852,7 @@ #define sk_X509_NAME_free BORINGSSL_ADD_PREFIX(sk_X509_NAME_free) #define sk_X509_NAME_insert BORINGSSL_ADD_PREFIX(sk_X509_NAME_insert) #define sk_X509_NAME_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_NAME_is_sorted) +#define sk_X509_NAME_last BORINGSSL_ADD_PREFIX(sk_X509_NAME_last) #define sk_X509_NAME_new BORINGSSL_ADD_PREFIX(sk_X509_NAME_new) #define sk_X509_NAME_new_null BORINGSSL_ADD_PREFIX(sk_X509_NAME_new_null) #define sk_X509_NAME_num BORINGSSL_ADD_PREFIX(sk_X509_NAME_num) @@ -7821,6 +7879,7 @@ #define sk_X509_OBJECT_free BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_free) #define sk_X509_OBJECT_insert BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_insert) #define sk_X509_OBJECT_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_is_sorted) +#define sk_X509_OBJECT_last BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_last) #define sk_X509_OBJECT_new BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_new) #define sk_X509_OBJECT_new_null BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_new_null) #define sk_X509_OBJECT_num BORINGSSL_ADD_PREFIX(sk_X509_OBJECT_num) @@ -7847,6 +7906,7 @@ #define sk_X509_REVOKED_free BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_free) #define sk_X509_REVOKED_insert BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_insert) #define sk_X509_REVOKED_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_is_sorted) +#define sk_X509_REVOKED_last BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_last) #define sk_X509_REVOKED_new BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_new) #define sk_X509_REVOKED_new_null BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_new_null) #define sk_X509_REVOKED_num BORINGSSL_ADD_PREFIX(sk_X509_REVOKED_num) @@ -7873,6 +7933,7 @@ #define sk_X509_free BORINGSSL_ADD_PREFIX(sk_X509_free) #define sk_X509_insert BORINGSSL_ADD_PREFIX(sk_X509_insert) #define sk_X509_is_sorted BORINGSSL_ADD_PREFIX(sk_X509_is_sorted) +#define sk_X509_last BORINGSSL_ADD_PREFIX(sk_X509_last) #define sk_X509_new BORINGSSL_ADD_PREFIX(sk_X509_new) #define sk_X509_new_null BORINGSSL_ADD_PREFIX(sk_X509_new_null) #define sk_X509_num BORINGSSL_ADD_PREFIX(sk_X509_num) @@ -7899,6 +7960,7 @@ #define sk_void_free BORINGSSL_ADD_PREFIX(sk_void_free) #define sk_void_insert BORINGSSL_ADD_PREFIX(sk_void_insert) #define sk_void_is_sorted BORINGSSL_ADD_PREFIX(sk_void_is_sorted) +#define sk_void_last BORINGSSL_ADD_PREFIX(sk_void_last) #define sk_void_new BORINGSSL_ADD_PREFIX(sk_void_new) #define sk_void_new_null BORINGSSL_ADD_PREFIX(sk_void_new_null) #define sk_void_num BORINGSSL_ADD_PREFIX(sk_void_num)
diff --git a/include/openssl/stack.h b/include/openssl/stack.h index 18824d1..129aae0 100644 --- a/include/openssl/stack.h +++ b/include/openssl/stack.h
@@ -128,6 +128,10 @@ // returns NULL. SAMPLE *sk_SAMPLE_value(const STACK_OF(SAMPLE) *sk, size_t i); +// sk_SAMPLE_last returns the last pointer in `sk`, or NULL if `sk` is empty. If +// `sk` is NULL, it is treated as an empty list and the function returns NULL. +SAMPLE *sk_SAMPLE_last(const STACK_OF(SAMPLE) *sk); + // sk_SAMPLE_set sets the `i`th pointer in `sk` to `p` and returns `p`. If `i` // is out of range, it returns NULL. SAMPLE *sk_SAMPLE_set(STACK_OF(SAMPLE) *sk, size_t i, SAMPLE *p); @@ -281,6 +285,7 @@ OPENSSL_EXPORT size_t OPENSSL_sk_num(const OPENSSL_STACK *sk); OPENSSL_EXPORT void OPENSSL_sk_zero(OPENSSL_STACK *sk); OPENSSL_EXPORT void *OPENSSL_sk_value(const OPENSSL_STACK *sk, size_t i); +OPENSSL_EXPORT void *OPENSSL_sk_last(const OPENSSL_STACK *sk); OPENSSL_EXPORT void *OPENSSL_sk_set(OPENSSL_STACK *sk, size_t i, void *p); OPENSSL_EXPORT void OPENSSL_sk_free(OPENSSL_STACK *sk); OPENSSL_EXPORT void OPENSSL_sk_pop_free_ex( @@ -449,6 +454,10 @@ return (ptrtype)OPENSSL_sk_value((const OPENSSL_STACK *)sk, i); \ } \ \ + OPENSSL_INLINE ptrtype sk_##name##_last(const STACK_OF(name) *sk) { \ + return (ptrtype)OPENSSL_sk_last((const OPENSSL_STACK *)sk); \ + } \ + \ OPENSSL_INLINE ptrtype sk_##name##_set(STACK_OF(name) *sk, size_t i, \ ptrtype p) { \ return (ptrtype)OPENSSL_sk_set((OPENSSL_STACK *)sk, i, (void *)p); \