summaryrefslogtreecommitdiff
path: root/src/lib/libssl/src/crypto/x509v3/v3_lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/src/crypto/x509v3/v3_lib.c')
-rw-r--r--src/lib/libssl/src/crypto/x509v3/v3_lib.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_lib.c b/src/lib/libssl/src/crypto/x509v3/v3_lib.c
index df3a48f43e..0f1e1d4422 100644
--- a/src/lib/libssl/src/crypto/x509v3/v3_lib.c
+++ b/src/lib/libssl/src/crypto/x509v3/v3_lib.c
@@ -84,20 +84,24 @@ int X509V3_EXT_add(X509V3_EXT_METHOD *ext)
84} 84}
85 85
86static int ext_cmp(const X509V3_EXT_METHOD * const *a, 86static int ext_cmp(const X509V3_EXT_METHOD * const *a,
87 const X509V3_EXT_METHOD * const *b) 87 const X509V3_EXT_METHOD * const *b)
88{ 88{
89 return ((*a)->ext_nid - (*b)->ext_nid); 89 return ((*a)->ext_nid - (*b)->ext_nid);
90} 90}
91 91
92X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid) 92DECLARE_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *, const X509V3_EXT_METHOD *,
93 ext);
94IMPLEMENT_OBJ_BSEARCH_CMP_FN(const X509V3_EXT_METHOD *,
95 const X509V3_EXT_METHOD *, ext);
96
97const X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid)
93{ 98{
94 X509V3_EXT_METHOD tmp, *t = &tmp, **ret; 99 X509V3_EXT_METHOD tmp;
100 const X509V3_EXT_METHOD *t = &tmp, * const *ret;
95 int idx; 101 int idx;
96 if(nid < 0) return NULL; 102 if(nid < 0) return NULL;
97 tmp.ext_nid = nid; 103 tmp.ext_nid = nid;
98 ret = (X509V3_EXT_METHOD **) OBJ_bsearch((char *)&t, 104 ret = OBJ_bsearch_ext(&t, standard_exts, STANDARD_EXTENSION_COUNT);
99 (char *)standard_exts, STANDARD_EXTENSION_COUNT,
100 sizeof(X509V3_EXT_METHOD *), (int (*)(const void *, const void *))ext_cmp);
101 if(ret) return *ret; 105 if(ret) return *ret;
102 if(!ext_list) return NULL; 106 if(!ext_list) return NULL;
103 idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); 107 idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp);
@@ -105,7 +109,7 @@ X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid)
105 return sk_X509V3_EXT_METHOD_value(ext_list, idx); 109 return sk_X509V3_EXT_METHOD_value(ext_list, idx);
106} 110}
107 111
108X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext) 112const X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext)
109{ 113{
110 int nid; 114 int nid;
111 if((nid = OBJ_obj2nid(ext->object)) == NID_undef) return NULL; 115 if((nid = OBJ_obj2nid(ext->object)) == NID_undef) return NULL;
@@ -122,7 +126,9 @@ int X509V3_EXT_add_list(X509V3_EXT_METHOD *extlist)
122 126
123int X509V3_EXT_add_alias(int nid_to, int nid_from) 127int X509V3_EXT_add_alias(int nid_to, int nid_from)
124{ 128{
125 X509V3_EXT_METHOD *ext, *tmpext; 129 const X509V3_EXT_METHOD *ext;
130 X509V3_EXT_METHOD *tmpext;
131
126 if(!(ext = X509V3_EXT_get_nid(nid_from))) { 132 if(!(ext = X509V3_EXT_get_nid(nid_from))) {
127 X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND); 133 X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND);
128 return 0; 134 return 0;
@@ -161,7 +167,7 @@ int X509V3_add_standard_extensions(void)
161 167
162void *X509V3_EXT_d2i(X509_EXTENSION *ext) 168void *X509V3_EXT_d2i(X509_EXTENSION *ext)
163{ 169{
164 X509V3_EXT_METHOD *method; 170 const X509V3_EXT_METHOD *method;
165 const unsigned char *p; 171 const unsigned char *p;
166 172
167 if(!(method = X509V3_EXT_get(ext))) return NULL; 173 if(!(method = X509V3_EXT_get(ext))) return NULL;