From 464e7bece5df6e122bd757c46dcadb142490e9a2 Mon Sep 17 00:00:00 2001 From: jsing <> Date: Sat, 21 Jan 2017 04:31:25 +0000 Subject: Expand DECLARE_OBJ_BSEARCH_CMP_FN and IMPLEMENT_OBJ_BSEARCH_CMP_FN macros. No change to generated assembly excluding line numbers. --- src/lib/libcrypto/asn1/a_strnid.c | 22 +++++++++++++++++++--- src/lib/libcrypto/asn1/ameth_lib.c | 24 +++++++++++++++++++----- 2 files changed, 38 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/src/lib/libcrypto/asn1/a_strnid.c b/src/lib/libcrypto/asn1/a_strnid.c index 0744ffb228..f325d91924 100644 --- a/src/lib/libcrypto/asn1/a_strnid.c +++ b/src/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/src/lib/libcrypto/asn1/ameth_lib.c b/src/lib/libcrypto/asn1/ameth_lib.c index 168321618c..b27d72af45 100644 --- a/src/lib/libcrypto/asn1/ameth_lib.c +++ b/src/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) -- cgit v1.2.3-55-g6feb