summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/libssl/ssl_cert.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/libssl/ssl_cert.c b/src/lib/libssl/ssl_cert.c
index 6c00b0d336..4641ac92d0 100644
--- a/src/lib/libssl/ssl_cert.c
+++ b/src/lib/libssl/ssl_cert.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_cert.c,v 1.74 2019/03/25 17:33:26 jsing Exp $ */ 1/* $OpenBSD: ssl_cert.c,v 1.75 2019/04/13 18:04:05 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 *
@@ -466,17 +466,23 @@ SSL_dup_CA_list(const STACK_OF(X509_NAME) *sk)
466{ 466{
467 int i; 467 int i;
468 STACK_OF(X509_NAME) *ret; 468 STACK_OF(X509_NAME) *ret;
469 X509_NAME *name; 469 X509_NAME *name = NULL;
470
471 if ((ret = sk_X509_NAME_new_null()) == NULL)
472 goto err;
470 473
471 ret = sk_X509_NAME_new_null();
472 for (i = 0; i < sk_X509_NAME_num(sk); i++) { 474 for (i = 0; i < sk_X509_NAME_num(sk); i++) {
473 name = X509_NAME_dup(sk_X509_NAME_value(sk, i)); 475 if ((name = X509_NAME_dup(sk_X509_NAME_value(sk, i))) == NULL)
474 if ((name == NULL) || !sk_X509_NAME_push(ret, name)) { 476 goto err;
475 sk_X509_NAME_pop_free(ret, X509_NAME_free); 477 if (!sk_X509_NAME_push(ret, name))
476 return (NULL); 478 goto err;
477 }
478 } 479 }
479 return (ret); 480 return (ret);
481
482 err:
483 X509_NAME_free(name);
484 sk_X509_NAME_pop_free(ret, X509_NAME_free);
485 return NULL;
480} 486}
481 487
482void 488void