diff options
author | Richard Levitte <levitte@openssl.org> | 2019-05-08 11:40:20 +0300 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2019-05-08 17:17:16 +0300 |
commit | 5c3f1e34b559c9b4372bf48aab63b61a6cd5edbb (patch) | |
tree | 3c6d91959d546794e32517dd5adecc8f1bbc0333 /include/internal | |
parent | 67c81ec311d696464bdbf4c6d6f8a887a3ddf9f8 (diff) |
ossl_bsearch(): New generic internal binary search utility function
OBJ_bsearch_ and OBJ_bsearch_ex_ are generic functions that don't
really belong with the OBJ API, but should rather be generic utility
functions. The ending underscore indicates that they are considered
internal, even though they are declared publicly.
Since crypto/stack/stack.c uses OBJ_bsearch_ex_, the stack API ends up
depending on the OBJ API, which is unnecessary, and carries along
other dependencies.
Therefor, a generic internal function is created, ossl_bsearch().
This removes the unecessary dependencies.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8899)
Diffstat (limited to 'include/internal')
-rw-r--r-- | include/internal/cryptlib.h | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h index df23f578e3..46b5d344a4 100644 --- a/include/internal/cryptlib.h +++ b/include/internal/cryptlib.h @@ -174,4 +174,15 @@ int crypto_get_ex_new_index_ex(OPENSSL_CTX *ctx, int class_index, CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); int crypto_free_ex_index_ex(OPENSSL_CTX *ctx, int class_index, int idx); + +/* Function for simple binary search */ + +/* Flags */ +# define OSSL_BSEARCH_VALUE_ON_NOMATCH 0x01 +# define OSSL_BSEARCH_FIRST_VALUE_ON_MATCH 0x02 + +const void *ossl_bsearch(const void *key, const void *base, int num, + int size, int (*cmp) (const void *, const void *), + int flags); + #endif |