aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/objects
diff options
context:
space:
mode:
authorBen Laurie <ben@openssl.org>2008-10-14 08:10:52 +0000
committerBen Laurie <ben@openssl.org>2008-10-14 08:10:52 +0000
commit1ea6472e604ed0e411fa41fcb5f242729ee42cd6 (patch)
tree48d94ac212ab59ca0e17e7c250f5f0f0c063a039 /crypto/objects
parentb8dfde2a362a4a4cb1f102674704972471385a87 (diff)
downloadopenssl-1ea6472e604ed0e411fa41fcb5f242729ee42cd6.tar.gz
Type-safe OBJ_bsearch_ex.
Diffstat (limited to 'crypto/objects')
-rw-r--r--crypto/objects/obj_dat.c8
-rw-r--r--crypto/objects/objects.h14
2 files changed, 16 insertions, 6 deletions
diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c
index acb6bcfb06..2f41aaeb0f 100644
--- a/crypto/objects/obj_dat.c
+++ b/crypto/objects/obj_dat.c
@@ -678,11 +678,13 @@ int OBJ_sn2nid(const char *s)
const void *OBJ_bsearch_(const void *key, const void *base, int num, int size,
int (*cmp)(const void *, const void *))
{
- return OBJ_bsearch_ex(key, base, num, size, cmp, 0);
+ return OBJ_bsearch_ex_(key, base, num, size, cmp, 0);
}
-const void *OBJ_bsearch_ex(const void *key, const void *base_, int num,
- int size, int (*cmp)(const void *, const void *), int flags)
+const void *OBJ_bsearch_ex_(const void *key, const void *base_, int num,
+ int size,
+ int (*cmp)(const void *, const void *),
+ int flags)
{
const char *base=base_;
int l,h,i=0,c=0;
diff --git a/crypto/objects/objects.h b/crypto/objects/objects.h
index 7dc1bf5f00..ecbe03c2d9 100644
--- a/crypto/objects/objects.h
+++ b/crypto/objects/objects.h
@@ -1013,9 +1013,10 @@ int OBJ_sn2nid(const char *s);
int OBJ_cmp(const ASN1_OBJECT *a,const ASN1_OBJECT *b);
const void * OBJ_bsearch_(const void *key,const void *base,int num,int size,
int (*cmp)(const void *, const void *));
-const void * OBJ_bsearch_ex(const void *key,const void *base,int num,
- int size, int (*cmp)(const void *, const void *),
- int flags);
+const void * OBJ_bsearch_ex_(const void *key,const void *base,int num,
+ int size,
+ int (*cmp)(const void *, const void *),
+ int flags);
#define _DECLARE_OBJ_BSEARCH_CMP_FN(scope, type1, type2, cmp) \
scope type1 *cmp##_type_1; \
@@ -1074,6 +1075,13 @@ const void * OBJ_bsearch_ex(const void *key,const void *base,int num,
cmp##_type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \
cmp##_BSEARCH_CMP_FN)))
+#define OBJ_bsearch_ex(type1,key,type2,base,num,cmp,flags) \
+ ((type2 *)OBJ_bsearch_(CHECKED_PTR_OF(type1,key),CHECKED_PTR_OF(type2,base), \
+ num,sizeof(type2), \
+ (cmp##_type_1=CHECKED_PTR_OF(type1,cmp##_type_1), \
+ cmp##_type_2=CHECKED_PTR_OF(type2,cmp##_type_2), \
+ cmp##_BSEARCH_CMP_FN)),flags)
+
int OBJ_new_nid(int num);
int OBJ_add_object(const ASN1_OBJECT *obj);
int OBJ_create(const char *oid,const char *sn,const char *ln);