summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/x509/x509_lu.c31
-rw-r--r--src/lib/libssl/src/crypto/x509/x509_lu.c31
2 files changed, 34 insertions, 28 deletions
diff --git a/src/lib/libcrypto/x509/x509_lu.c b/src/lib/libcrypto/x509/x509_lu.c
index b522c88c25..39c82a71f1 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.17 2014/07/11 12:52:41 miod Exp $ */ 1/* $OpenBSD: x509_lu.c,v 1.18 2014/09/26 19:32:15 miod 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 *
@@ -203,11 +203,8 @@ X509_STORE_new(void)
203 ret->verify = 0; 203 ret->verify = 0;
204 ret->verify_cb = 0; 204 ret->verify_cb = 0;
205 205
206 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) { 206 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL)
207 sk_X509_OBJECT_free(ret->objs); 207 goto err;
208 free(ret);
209 return NULL;
210 }
211 208
212 ret->get_issuer = 0; 209 ret->get_issuer = 0;
213 ret->check_issued = 0; 210 ret->check_issued = 0;
@@ -219,15 +216,18 @@ X509_STORE_new(void)
219 ret->lookup_crls = 0; 216 ret->lookup_crls = 0;
220 ret->cleanup = 0; 217 ret->cleanup = 0;
221 218
222 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, 219 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data))
223 ret, &ret->ex_data)) { 220 goto err;
224 sk_X509_OBJECT_free(ret->objs);
225 free(ret);
226 return NULL;
227 }
228 221
229 ret->references = 1; 222 ret->references = 1;
230 return ret; 223 return ret;
224
225err:
226 X509_VERIFY_PARAM_free(ret->param);
227 sk_X509_LOOKUP_free(ret->get_cert_methods);
228 sk_X509_OBJECT_free(ret->objs);
229 free(ret);
230 return NULL;
231} 231}
232 232
233static void 233static void
@@ -264,8 +264,7 @@ X509_STORE_free(X509_STORE *vfy)
264 sk_X509_OBJECT_pop_free(vfy->objs, cleanup); 264 sk_X509_OBJECT_pop_free(vfy->objs, cleanup);
265 265
266 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_X509_STORE, vfy, &vfy->ex_data); 266 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_X509_STORE, vfy, &vfy->ex_data);
267 if (vfy->param) 267 X509_VERIFY_PARAM_free(vfy->param);
268 X509_VERIFY_PARAM_free(vfy->param);
269 free(vfy); 268 free(vfy);
270} 269}
271 270
@@ -505,6 +504,8 @@ X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
505 X509_OBJECT *obj; 504 X509_OBJECT *obj;
506 505
507 sk = sk_X509_new_null(); 506 sk = sk_X509_new_null();
507 if (sk == NULL)
508 return NULL;
508 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE); 509 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
509 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt); 510 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);
510 if (idx < 0) { 511 if (idx < 0) {
@@ -552,6 +553,8 @@ X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
552 X509_OBJECT *obj, xobj; 553 X509_OBJECT *obj, xobj;
553 554
554 sk = sk_X509_CRL_new_null(); 555 sk = sk_X509_CRL_new_null();
556 if (sk == NULL)
557 return NULL;
555 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE); 558 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
556 /* Check cache first */ 559 /* Check cache first */
557 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt); 560 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);
diff --git a/src/lib/libssl/src/crypto/x509/x509_lu.c b/src/lib/libssl/src/crypto/x509/x509_lu.c
index b522c88c25..39c82a71f1 100644
--- a/src/lib/libssl/src/crypto/x509/x509_lu.c
+++ b/src/lib/libssl/src/crypto/x509/x509_lu.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: x509_lu.c,v 1.17 2014/07/11 12:52:41 miod Exp $ */ 1/* $OpenBSD: x509_lu.c,v 1.18 2014/09/26 19:32:15 miod 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 *
@@ -203,11 +203,8 @@ X509_STORE_new(void)
203 ret->verify = 0; 203 ret->verify = 0;
204 ret->verify_cb = 0; 204 ret->verify_cb = 0;
205 205
206 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL) { 206 if ((ret->param = X509_VERIFY_PARAM_new()) == NULL)
207 sk_X509_OBJECT_free(ret->objs); 207 goto err;
208 free(ret);
209 return NULL;
210 }
211 208
212 ret->get_issuer = 0; 209 ret->get_issuer = 0;
213 ret->check_issued = 0; 210 ret->check_issued = 0;
@@ -219,15 +216,18 @@ X509_STORE_new(void)
219 ret->lookup_crls = 0; 216 ret->lookup_crls = 0;
220 ret->cleanup = 0; 217 ret->cleanup = 0;
221 218
222 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, 219 if (!CRYPTO_new_ex_data(CRYPTO_EX_INDEX_X509_STORE, ret, &ret->ex_data))
223 ret, &ret->ex_data)) { 220 goto err;
224 sk_X509_OBJECT_free(ret->objs);
225 free(ret);
226 return NULL;
227 }
228 221
229 ret->references = 1; 222 ret->references = 1;
230 return ret; 223 return ret;
224
225err:
226 X509_VERIFY_PARAM_free(ret->param);
227 sk_X509_LOOKUP_free(ret->get_cert_methods);
228 sk_X509_OBJECT_free(ret->objs);
229 free(ret);
230 return NULL;
231} 231}
232 232
233static void 233static void
@@ -264,8 +264,7 @@ X509_STORE_free(X509_STORE *vfy)
264 sk_X509_OBJECT_pop_free(vfy->objs, cleanup); 264 sk_X509_OBJECT_pop_free(vfy->objs, cleanup);
265 265
266 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_X509_STORE, vfy, &vfy->ex_data); 266 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_X509_STORE, vfy, &vfy->ex_data);
267 if (vfy->param) 267 X509_VERIFY_PARAM_free(vfy->param);
268 X509_VERIFY_PARAM_free(vfy->param);
269 free(vfy); 268 free(vfy);
270} 269}
271 270
@@ -505,6 +504,8 @@ X509_STORE_get1_certs(X509_STORE_CTX *ctx, X509_NAME *nm)
505 X509_OBJECT *obj; 504 X509_OBJECT *obj;
506 505
507 sk = sk_X509_new_null(); 506 sk = sk_X509_new_null();
507 if (sk == NULL)
508 return NULL;
508 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE); 509 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
509 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt); 510 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_X509, nm, &cnt);
510 if (idx < 0) { 511 if (idx < 0) {
@@ -552,6 +553,8 @@ X509_STORE_get1_crls(X509_STORE_CTX *ctx, X509_NAME *nm)
552 X509_OBJECT *obj, xobj; 553 X509_OBJECT *obj, xobj;
553 554
554 sk = sk_X509_CRL_new_null(); 555 sk = sk_X509_CRL_new_null();
556 if (sk == NULL)
557 return NULL;
555 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE); 558 CRYPTO_w_lock(CRYPTO_LOCK_X509_STORE);
556 /* Check cache first */ 559 /* Check cache first */
557 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt); 560 idx = x509_object_idx_cnt(ctx->ctx->objs, X509_LU_CRL, nm, &cnt);