diff options
-rw-r--r-- | src/lib/libcrypto/x509/x509_alt.c | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/lib/libcrypto/x509/x509_alt.c b/src/lib/libcrypto/x509/x509_alt.c index c4c5fcabe7..59fa39fa6b 100644 --- a/src/lib/libcrypto/x509/x509_alt.c +++ b/src/lib/libcrypto/x509/x509_alt.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: x509_alt.c,v 1.15 2023/02/16 08:38:17 tb Exp $ */ | 1 | /* $OpenBSD: x509_alt.c,v 1.16 2023/08/30 00:49:32 tb Exp $ */ |
2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
3 | * project. | 3 | * project. |
4 | */ | 4 | */ |
@@ -354,10 +354,11 @@ err: | |||
354 | static int | 354 | static int |
355 | copy_issuer(X509V3_CTX *ctx, GENERAL_NAMES *gens) | 355 | copy_issuer(X509V3_CTX *ctx, GENERAL_NAMES *gens) |
356 | { | 356 | { |
357 | GENERAL_NAMES *ialt; | 357 | GENERAL_NAMES *ialt = NULL; |
358 | GENERAL_NAME *gen; | 358 | GENERAL_NAME *gen = NULL; |
359 | X509_EXTENSION *ext; | 359 | X509_EXTENSION *ext; |
360 | int i; | 360 | int i; |
361 | int ret = 0; | ||
361 | 362 | ||
362 | if (ctx && (ctx->flags == CTX_TEST)) | 363 | if (ctx && (ctx->flags == CTX_TEST)) |
363 | return 1; | 364 | return 1; |
@@ -375,19 +376,24 @@ copy_issuer(X509V3_CTX *ctx, GENERAL_NAMES *gens) | |||
375 | } | 376 | } |
376 | 377 | ||
377 | for (i = 0; i < sk_GENERAL_NAME_num(ialt); i++) { | 378 | for (i = 0; i < sk_GENERAL_NAME_num(ialt); i++) { |
378 | gen = sk_GENERAL_NAME_value(ialt, i); | 379 | GENERAL_NAME *val = sk_GENERAL_NAME_value(ialt, i); |
380 | |||
381 | if ((gen = GENERAL_NAME_dup(val)) == NULL) | ||
382 | goto err; | ||
379 | if (!sk_GENERAL_NAME_push(gens, gen)) { | 383 | if (!sk_GENERAL_NAME_push(gens, gen)) { |
380 | X509V3error(ERR_R_MALLOC_FAILURE); | 384 | X509V3error(ERR_R_MALLOC_FAILURE); |
381 | goto err; | 385 | goto err; |
382 | } | 386 | } |
387 | gen = NULL; | ||
383 | } | 388 | } |
384 | sk_GENERAL_NAME_free(ialt); | ||
385 | 389 | ||
386 | return 1; | 390 | ret = 1; |
387 | 391 | ||
388 | err: | 392 | err: |
389 | return 0; | 393 | sk_GENERAL_NAME_pop_free(ialt, GENERAL_NAME_free); |
394 | GENERAL_NAME_free(gen); | ||
390 | 395 | ||
396 | return ret; | ||
391 | } | 397 | } |
392 | 398 | ||
393 | static GENERAL_NAMES * | 399 | static GENERAL_NAMES * |