diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib/libcrypto/x509/x509_lu.c | 31 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/x509/x509_lu.c | 31 |
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 | |||
225 | err: | ||
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 | ||
233 | static void | 233 | static 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 | |||
225 | err: | ||
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 | ||
233 | static void | 233 | static 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); |