summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjsing <jsing@openbsd.org>2017-01-21 04:31:25 +0000
committerjsing <jsing@openbsd.org>2017-01-21 04:31:25 +0000
commitd4053c9ca3f603077b45a61e4020be73eb58e691 (patch)
tree9a1e10447f507746371c30e4287df5b9d6111b14
parentExpand DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN macro. (diff)
downloadwireguard-openbsd-d4053c9ca3f603077b45a61e4020be73eb58e691.tar.xz
wireguard-openbsd-d4053c9ca3f603077b45a61e4020be73eb58e691.zip
Expand DECLARE_OBJ_BSEARCH_CMP_FN and IMPLEMENT_OBJ_BSEARCH_CMP_FN macros.
No change to generated assembly excluding line numbers.
-rw-r--r--lib/libcrypto/asn1/a_strnid.c22
-rw-r--r--lib/libcrypto/asn1/ameth_lib.c24
2 files changed, 38 insertions, 8 deletions
diff --git a/lib/libcrypto/asn1/a_strnid.c b/lib/libcrypto/asn1/a_strnid.c
index 0744ffb228f..f325d91924c 100644
--- a/lib/libcrypto/asn1/a_strnid.c
+++ b/lib/libcrypto/asn1/a_strnid.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: a_strnid.c,v 1.19 2015/02/10 11:22:21 jsing Exp $ */
+/* $OpenBSD: a_strnid.c,v 1.20 2017/01/21 04:31:25 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 1999.
*/
@@ -201,7 +201,9 @@ sk_table_cmp(const ASN1_STRING_TABLE * const *a,
return (*a)->nid - (*b)->nid;
}
-DECLARE_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table);
+static int table_cmp_BSEARCH_CMP_FN(const void *, const void *);
+static int table_cmp(ASN1_STRING_TABLE const *, ASN1_STRING_TABLE const *);
+static ASN1_STRING_TABLE *OBJ_bsearch_table(ASN1_STRING_TABLE *key, ASN1_STRING_TABLE const *base, int num);
static int
table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b)
@@ -209,7 +211,21 @@ table_cmp(const ASN1_STRING_TABLE *a, const ASN1_STRING_TABLE *b)
return a->nid - b->nid;
}
-IMPLEMENT_OBJ_BSEARCH_CMP_FN(ASN1_STRING_TABLE, ASN1_STRING_TABLE, table);
+
+static int
+table_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_)
+{
+ ASN1_STRING_TABLE const *a = a_;
+ ASN1_STRING_TABLE const *b = b_;
+ return table_cmp(a, b);
+}
+
+static ASN1_STRING_TABLE *
+OBJ_bsearch_table(ASN1_STRING_TABLE *key, ASN1_STRING_TABLE const *base, int num)
+{
+ return (ASN1_STRING_TABLE *)OBJ_bsearch_(key, base, num, sizeof(ASN1_STRING_TABLE),
+ table_cmp_BSEARCH_CMP_FN);
+}
ASN1_STRING_TABLE *
ASN1_STRING_TABLE_get(int nid)
diff --git a/lib/libcrypto/asn1/ameth_lib.c b/lib/libcrypto/asn1/ameth_lib.c
index 168321618cb..b27d72af45f 100644
--- a/lib/libcrypto/asn1/ameth_lib.c
+++ b/lib/libcrypto/asn1/ameth_lib.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ameth_lib.c,v 1.15 2014/11/09 19:17:13 miod Exp $ */
+/* $OpenBSD: ameth_lib.c,v 1.16 2017/01/21 04:31:25 jsing Exp $ */
/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
* project 2006.
*/
@@ -114,8 +114,9 @@ typedef int sk_cmp_fn_type(const char * const *a, const char * const *b);
DECLARE_STACK_OF(EVP_PKEY_ASN1_METHOD)
static STACK_OF(EVP_PKEY_ASN1_METHOD) *app_methods = NULL;
-DECLARE_OBJ_BSEARCH_CMP_FN(const EVP_PKEY_ASN1_METHOD *,
- const EVP_PKEY_ASN1_METHOD *, ameth);
+static int ameth_cmp_BSEARCH_CMP_FN(const void *, const void *);
+static int ameth_cmp(const EVP_PKEY_ASN1_METHOD * const *, const EVP_PKEY_ASN1_METHOD * const *);
+static const EVP_PKEY_ASN1_METHOD * *OBJ_bsearch_ameth(const EVP_PKEY_ASN1_METHOD * *key, const EVP_PKEY_ASN1_METHOD * const *base, int num);
static int
ameth_cmp(const EVP_PKEY_ASN1_METHOD * const *a,
@@ -124,8 +125,21 @@ ameth_cmp(const EVP_PKEY_ASN1_METHOD * const *a,
return ((*a)->pkey_id - (*b)->pkey_id);
}
-IMPLEMENT_OBJ_BSEARCH_CMP_FN(const EVP_PKEY_ASN1_METHOD *,
- const EVP_PKEY_ASN1_METHOD *, ameth);
+
+static int
+ameth_cmp_BSEARCH_CMP_FN(const void *a_, const void *b_)
+{
+ const EVP_PKEY_ASN1_METHOD * const *a = a_;
+ const EVP_PKEY_ASN1_METHOD * const *b = b_;
+ return ameth_cmp(a, b);
+}
+
+static const EVP_PKEY_ASN1_METHOD * *
+OBJ_bsearch_ameth(const EVP_PKEY_ASN1_METHOD * *key, const EVP_PKEY_ASN1_METHOD * const *base, int num)
+{
+ return (const EVP_PKEY_ASN1_METHOD * *)OBJ_bsearch_(key, base, num, sizeof(const EVP_PKEY_ASN1_METHOD *),
+ ameth_cmp_BSEARCH_CMP_FN);
+}
int
EVP_PKEY_asn1_get_count(void)