diff options
Diffstat (limited to 'src/lib/libssl/src/crypto/x509v3/v3_lib.c')
-rw-r--r-- | src/lib/libssl/src/crypto/x509v3/v3_lib.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/lib/libssl/src/crypto/x509v3/v3_lib.c b/src/lib/libssl/src/crypto/x509v3/v3_lib.c index 4242d130a2..ea86b9ebb9 100644 --- a/src/lib/libssl/src/crypto/x509v3/v3_lib.c +++ b/src/lib/libssl/src/crypto/x509v3/v3_lib.c | |||
@@ -64,25 +64,27 @@ | |||
64 | 64 | ||
65 | #include "ext_dat.h" | 65 | #include "ext_dat.h" |
66 | 66 | ||
67 | static STACK *ext_list = NULL; | 67 | static STACK_OF(X509V3_EXT_METHOD) *ext_list = NULL; |
68 | 68 | ||
69 | static int ext_cmp(X509V3_EXT_METHOD **a, X509V3_EXT_METHOD **b); | 69 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, |
70 | const X509V3_EXT_METHOD * const *b); | ||
70 | static void ext_list_free(X509V3_EXT_METHOD *ext); | 71 | static void ext_list_free(X509V3_EXT_METHOD *ext); |
71 | 72 | ||
72 | int X509V3_EXT_add(X509V3_EXT_METHOD *ext) | 73 | int X509V3_EXT_add(X509V3_EXT_METHOD *ext) |
73 | { | 74 | { |
74 | if(!ext_list && !(ext_list = sk_new(ext_cmp))) { | 75 | if(!ext_list && !(ext_list = sk_X509V3_EXT_METHOD_new(ext_cmp))) { |
75 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); | 76 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); |
76 | return 0; | 77 | return 0; |
77 | } | 78 | } |
78 | if(!sk_push(ext_list, (char *)ext)) { | 79 | if(!sk_X509V3_EXT_METHOD_push(ext_list, ext)) { |
79 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); | 80 | X509V3err(X509V3_F_X509V3_EXT_ADD,ERR_R_MALLOC_FAILURE); |
80 | return 0; | 81 | return 0; |
81 | } | 82 | } |
82 | return 1; | 83 | return 1; |
83 | } | 84 | } |
84 | 85 | ||
85 | static int ext_cmp(X509V3_EXT_METHOD **a, X509V3_EXT_METHOD **b) | 86 | static int ext_cmp(const X509V3_EXT_METHOD * const *a, |
87 | const X509V3_EXT_METHOD * const *b) | ||
86 | { | 88 | { |
87 | return ((*a)->ext_nid - (*b)->ext_nid); | 89 | return ((*a)->ext_nid - (*b)->ext_nid); |
88 | } | 90 | } |
@@ -95,12 +97,12 @@ X509V3_EXT_METHOD *X509V3_EXT_get_nid(int nid) | |||
95 | tmp.ext_nid = nid; | 97 | tmp.ext_nid = nid; |
96 | ret = (X509V3_EXT_METHOD **) OBJ_bsearch((char *)&t, | 98 | ret = (X509V3_EXT_METHOD **) OBJ_bsearch((char *)&t, |
97 | (char *)standard_exts, STANDARD_EXTENSION_COUNT, | 99 | (char *)standard_exts, STANDARD_EXTENSION_COUNT, |
98 | sizeof(X509V3_EXT_METHOD *), (int (*)())ext_cmp); | 100 | sizeof(X509V3_EXT_METHOD *), (int (*)(const void *, const void *))ext_cmp); |
99 | if(ret) return *ret; | 101 | if(ret) return *ret; |
100 | if(!ext_list) return NULL; | 102 | if(!ext_list) return NULL; |
101 | idx = sk_find(ext_list, (char *)&tmp); | 103 | idx = sk_X509V3_EXT_METHOD_find(ext_list, &tmp); |
102 | if(idx == -1) return NULL; | 104 | if(idx == -1) return NULL; |
103 | return (X509V3_EXT_METHOD *)sk_value(ext_list, idx); | 105 | return sk_X509V3_EXT_METHOD_value(ext_list, idx); |
104 | } | 106 | } |
105 | 107 | ||
106 | X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext) | 108 | X509V3_EXT_METHOD *X509V3_EXT_get(X509_EXTENSION *ext) |
@@ -125,7 +127,7 @@ int X509V3_EXT_add_alias(int nid_to, int nid_from) | |||
125 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND); | 127 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,X509V3_R_EXTENSION_NOT_FOUND); |
126 | return 0; | 128 | return 0; |
127 | } | 129 | } |
128 | if(!(tmpext = (X509V3_EXT_METHOD *)Malloc(sizeof(X509V3_EXT_METHOD)))) { | 130 | if(!(tmpext = (X509V3_EXT_METHOD *)OPENSSL_malloc(sizeof(X509V3_EXT_METHOD)))) { |
129 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,ERR_R_MALLOC_FAILURE); | 131 | X509V3err(X509V3_F_X509V3_EXT_ADD_ALIAS,ERR_R_MALLOC_FAILURE); |
130 | return 0; | 132 | return 0; |
131 | } | 133 | } |
@@ -137,13 +139,13 @@ int X509V3_EXT_add_alias(int nid_to, int nid_from) | |||
137 | 139 | ||
138 | void X509V3_EXT_cleanup(void) | 140 | void X509V3_EXT_cleanup(void) |
139 | { | 141 | { |
140 | sk_pop_free(ext_list, ext_list_free); | 142 | sk_X509V3_EXT_METHOD_pop_free(ext_list, ext_list_free); |
141 | ext_list = NULL; | 143 | ext_list = NULL; |
142 | } | 144 | } |
143 | 145 | ||
144 | static void ext_list_free(X509V3_EXT_METHOD *ext) | 146 | static void ext_list_free(X509V3_EXT_METHOD *ext) |
145 | { | 147 | { |
146 | if(ext->ext_flags & X509V3_EXT_DYNAMIC) Free(ext); | 148 | if(ext->ext_flags & X509V3_EXT_DYNAMIC) OPENSSL_free(ext); |
147 | } | 149 | } |
148 | 150 | ||
149 | /* Legacy function: we don't need to add standard extensions | 151 | /* Legacy function: we don't need to add standard extensions |
@@ -213,9 +215,11 @@ void *X509V3_get_d2i(STACK_OF(X509_EXTENSION) *x, int nid, int *crit, int *idx) | |||
213 | if(crit) *crit = found_ex->critical; | 215 | if(crit) *crit = found_ex->critical; |
214 | return X509V3_EXT_d2i(found_ex); | 216 | return X509V3_EXT_d2i(found_ex); |
215 | } | 217 | } |
216 | 218 | ||
217 | /* Extension not found */ | 219 | /* Extension not found */ |
218 | if(idx) *idx = -1; | 220 | if(idx) *idx = -1; |
219 | if(crit) *crit = -1; | 221 | if(crit) *crit = -1; |
220 | return NULL; | 222 | return NULL; |
221 | } | 223 | } |
224 | |||
225 | IMPLEMENT_STACK_OF(X509V3_EXT_METHOD) | ||