diff options
| author | miod <> | 2015-02-14 15:16:59 +0000 |
|---|---|---|
| committer | miod <> | 2015-02-14 15:16:59 +0000 |
| commit | 97bfa37faa9181b1505591dc921fcedae918dc1f (patch) | |
| tree | 45e034643fdda8ea66116aa6f8474bd8dea79b84 | |
| parent | 33a440bc9926629e39cdff58bede114c91e390bb (diff) | |
| download | openbsd-97bfa37faa9181b1505591dc921fcedae918dc1f.tar.gz openbsd-97bfa37faa9181b1505591dc921fcedae918dc1f.tar.bz2 openbsd-97bfa37faa9181b1505591dc921fcedae918dc1f.zip | |
Check i2d_name_canon() for failure (negative return). Coverity CID 78888.
ok doug@ jsing@
Diffstat (limited to '')
| -rw-r--r-- | src/lib/libcrypto/asn1/x_name.c | 14 | ||||
| -rw-r--r-- | src/lib/libssl/src/crypto/asn1/x_name.c | 14 |
2 files changed, 16 insertions, 12 deletions
diff --git a/src/lib/libcrypto/asn1/x_name.c b/src/lib/libcrypto/asn1/x_name.c index 910110505d..c69c35534d 100644 --- a/src/lib/libcrypto/asn1/x_name.c +++ b/src/lib/libcrypto/asn1/x_name.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_name.c,v 1.26 2015/02/11 04:00:39 jsing Exp $ */ | 1 | /* $OpenBSD: x_name.c,v 1.27 2015/02/14 15:16:59 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 | * |
| @@ -422,7 +422,7 @@ x509_name_canon(X509_NAME *a) | |||
| 422 | STACK_OF(STACK_OF_X509_NAME_ENTRY) *intname = NULL; | 422 | STACK_OF(STACK_OF_X509_NAME_ENTRY) *intname = NULL; |
| 423 | STACK_OF(X509_NAME_ENTRY) *entries = NULL; | 423 | STACK_OF(X509_NAME_ENTRY) *entries = NULL; |
| 424 | X509_NAME_ENTRY *entry, *tmpentry = NULL; | 424 | X509_NAME_ENTRY *entry, *tmpentry = NULL; |
| 425 | int i, set = -1, ret = 0; | 425 | int i, len, set = -1, ret = 0; |
| 426 | 426 | ||
| 427 | if (a->canon_enc) { | 427 | if (a->canon_enc) { |
| 428 | free(a->canon_enc); | 428 | free(a->canon_enc); |
| @@ -456,16 +456,18 @@ x509_name_canon(X509_NAME *a) | |||
| 456 | } | 456 | } |
| 457 | 457 | ||
| 458 | /* Finally generate encoding */ | 458 | /* Finally generate encoding */ |
| 459 | a->canon_enclen = i2d_name_canon(intname, NULL); | 459 | len = i2d_name_canon(intname, NULL); |
| 460 | p = malloc(a->canon_enclen); | 460 | if (len < 0) |
| 461 | if (!p) | 461 | goto err; |
| 462 | p = malloc(len); | ||
| 463 | if (p == NULL) | ||
| 462 | goto err; | 464 | goto err; |
| 463 | a->canon_enc = p; | 465 | a->canon_enc = p; |
| 466 | a->canon_enclen = len; | ||
| 464 | i2d_name_canon(intname, &p); | 467 | i2d_name_canon(intname, &p); |
| 465 | ret = 1; | 468 | ret = 1; |
| 466 | 469 | ||
| 467 | err: | 470 | err: |
| 468 | |||
| 469 | if (tmpentry) | 471 | if (tmpentry) |
| 470 | X509_NAME_ENTRY_free(tmpentry); | 472 | X509_NAME_ENTRY_free(tmpentry); |
| 471 | if (intname) | 473 | if (intname) |
diff --git a/src/lib/libssl/src/crypto/asn1/x_name.c b/src/lib/libssl/src/crypto/asn1/x_name.c index 910110505d..c69c35534d 100644 --- a/src/lib/libssl/src/crypto/asn1/x_name.c +++ b/src/lib/libssl/src/crypto/asn1/x_name.c | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | /* $OpenBSD: x_name.c,v 1.26 2015/02/11 04:00:39 jsing Exp $ */ | 1 | /* $OpenBSD: x_name.c,v 1.27 2015/02/14 15:16:59 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 | * |
| @@ -422,7 +422,7 @@ x509_name_canon(X509_NAME *a) | |||
| 422 | STACK_OF(STACK_OF_X509_NAME_ENTRY) *intname = NULL; | 422 | STACK_OF(STACK_OF_X509_NAME_ENTRY) *intname = NULL; |
| 423 | STACK_OF(X509_NAME_ENTRY) *entries = NULL; | 423 | STACK_OF(X509_NAME_ENTRY) *entries = NULL; |
| 424 | X509_NAME_ENTRY *entry, *tmpentry = NULL; | 424 | X509_NAME_ENTRY *entry, *tmpentry = NULL; |
| 425 | int i, set = -1, ret = 0; | 425 | int i, len, set = -1, ret = 0; |
| 426 | 426 | ||
| 427 | if (a->canon_enc) { | 427 | if (a->canon_enc) { |
| 428 | free(a->canon_enc); | 428 | free(a->canon_enc); |
| @@ -456,16 +456,18 @@ x509_name_canon(X509_NAME *a) | |||
| 456 | } | 456 | } |
| 457 | 457 | ||
| 458 | /* Finally generate encoding */ | 458 | /* Finally generate encoding */ |
| 459 | a->canon_enclen = i2d_name_canon(intname, NULL); | 459 | len = i2d_name_canon(intname, NULL); |
| 460 | p = malloc(a->canon_enclen); | 460 | if (len < 0) |
| 461 | if (!p) | 461 | goto err; |
| 462 | p = malloc(len); | ||
| 463 | if (p == NULL) | ||
| 462 | goto err; | 464 | goto err; |
| 463 | a->canon_enc = p; | 465 | a->canon_enc = p; |
| 466 | a->canon_enclen = len; | ||
| 464 | i2d_name_canon(intname, &p); | 467 | i2d_name_canon(intname, &p); |
| 465 | ret = 1; | 468 | ret = 1; |
| 466 | 469 | ||
| 467 | err: | 470 | err: |
| 468 | |||
| 469 | if (tmpentry) | 471 | if (tmpentry) |
| 470 | X509_NAME_ENTRY_free(tmpentry); | 472 | X509_NAME_ENTRY_free(tmpentry); |
| 471 | if (intname) | 473 | if (intname) |
