diff options
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libcrypto/x509/x509_lu.c | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/src/lib/libcrypto/x509/x509_lu.c b/src/lib/libcrypto/x509/x509_lu.c index b968a13d6f..3fa572c7ef 100644 --- a/src/lib/libcrypto/x509/x509_lu.c +++ b/src/lib/libcrypto/x509/x509_lu.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509_lu.c,v 1.41 2021/11/05 17:06:42 tb Exp $ */ | 1 | /* $OpenBSD: x509_lu.c,v 1.42 2021/11/05 17:08:12 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -186,40 +186,30 @@ x509_object_cmp(const X509_OBJECT * const *a, const X509_OBJECT * const *b) | |||
186 | X509_STORE * | 186 | X509_STORE * |
187 | X509_STORE_new(void) | 187 | X509_STORE_new(void) |
188 | { | 188 | { |
189 | X509_STORE *ret; | 189 | X509_STORE *store; |
190 | 190 | ||
191 | if ((ret = malloc(sizeof(X509_STORE))) == NULL) | 191 | if ((store = calloc(1, sizeof(*store))) == NULL) |
192 | return NULL; | 192 | goto err; |
193 | ret->objs = sk_X509_OBJECT_new(x509_object_cmp); | ||
194 | ret->cache = 1; | ||
195 | ret->get_cert_methods = sk_X509_LOOKUP_new_null(); | ||
196 | ret->verify = 0; | ||
197 | ret->verify_cb = 0; | ||
198 | 193 | ||
199 | if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) | 194 | if ((store->objs = sk_X509_OBJECT_new(x509_object_cmp)) == NULL) |
195 | goto err; | ||
196 | if ((store->get_cert_methods = sk_X509_LOOKUP_new_null()) == NULL) | ||
197 | goto err; | ||
198 | if ((store->param = X509_VERIFY_PARAM_new()) == NULL) | ||
200 | goto err; | 199 | goto err; |
201 | 200 | ||
202 | ret->get_issuer = 0; | 201 | if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, store, |
203 | ret->check_issued = 0; | 202 | &store->ex_data)) |
204 | ret->check_revocation = 0; | ||
205 | ret->get_crl = 0; | ||
206 | ret->check_crl = 0; | ||
207 | ret->cert_crl = 0; | ||
208 | ret->lookup_certs = 0; | ||
209 | ret->lookup_crls = 0; | ||
210 | ret->cleanup = 0; | ||
211 | |||
212 | if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data)) | ||
213 | goto err; | 203 | goto err; |
214 | 204 | ||
215 | ret->references = 1; | 205 | store->references = 1; |
216 | return ret; | 206 | |
207 | return store; | ||
208 | |||
209 | err: | ||
210 | X509error(ERR_R_MALLOC_FAILURE); | ||
211 | X509_STORE_free(store); | ||
217 | 212 | ||
218 | err: | ||
219 | X509_VERIFY_PARAM_free(ret->param); | ||
220 | sk_X509_LOOKUP_free(ret->get_cert_methods); | ||
221 | sk_X509_OBJECT_free(ret->objs); | ||
222 | free(ret); | ||
223 | return NULL; | 213 | return NULL; |
224 | } | 214 | } |
225 | 215 | ||