diff options
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libssl/ssl_cert.c | 22 |
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 | ||
| 482 | void | 488 | void |
