summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormiod <>2015-02-14 15:16:59 +0000
committermiod <>2015-02-14 15:16:59 +0000
commitf6b0c8ad7f8c00e03ee72fd8edb2468a6dea987a (patch)
tree45e034643fdda8ea66116aa6f8474bd8dea79b84 /src
parent03c6c313948247939e6d31a9c40209243eb569f7 (diff)
downloadopenbsd-f6b0c8ad7f8c00e03ee72fd8edb2468a6dea987a.tar.gz
openbsd-f6b0c8ad7f8c00e03ee72fd8edb2468a6dea987a.tar.bz2
openbsd-f6b0c8ad7f8c00e03ee72fd8edb2468a6dea987a.zip
Check i2d_name_canon() for failure (negative return). Coverity CID 78888.
ok doug@ jsing@
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/asn1/x_name.c14
-rw-r--r--src/lib/libssl/src/crypto/asn1/x_name.c14
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
467err: 470err:
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
467err: 470err:
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)