diff options
author | miod <> | 2014-07-11 13:41:59 +0000 |
---|---|---|
committer | miod <> | 2014-07-11 13:41:59 +0000 |
commit | 9b099cfe9b8ff48ebf73f26baf1ffb356d3ab825 (patch) | |
tree | 65ce624e7f28ec877580f132bc7d476d3991df23 | |
parent | 348e81746631673e88ea126c2a95493cd916977a (diff) | |
download | openbsd-9b099cfe9b8ff48ebf73f26baf1ffb356d3ab825.tar.gz openbsd-9b099cfe9b8ff48ebf73f26baf1ffb356d3ab825.tar.bz2 openbsd-9b099cfe9b8ff48ebf73f26baf1ffb356d3ab825.zip |
More memory leaks and unchecked allocations; OpenSSL PR #3403 via OpenSSL
trunk. (note we had already fixed some of the issues in that PR independently)
-rw-r--r-- | src/lib/libcrypto/asn1/ameth_lib.c | 9 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn_mime.c | 4 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn_pack.c | 7 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/evp_asn1.c | 6 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/ameth_lib.c | 9 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/asn_mime.c | 4 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/asn_pack.c | 7 | ||||
-rw-r--r-- | src/lib/libssl/src/crypto/asn1/evp_asn1.c | 6 |
8 files changed, 38 insertions, 14 deletions
diff --git a/src/lib/libcrypto/asn1/ameth_lib.c b/src/lib/libcrypto/asn1/ameth_lib.c index 8701e97337..e9f73cb3a6 100644 --- a/src/lib/libcrypto/asn1/ameth_lib.c +++ b/src/lib/libcrypto/asn1/ameth_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ameth_lib.c,v 1.12 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: ameth_lib.c,v 1.13 2014/07/11 13:41:59 miod 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 2006. | 3 | * project 2006. |
4 | */ | 4 | */ |
@@ -242,11 +242,16 @@ int | |||
242 | EVP_PKEY_asn1_add_alias(int to, int from) | 242 | EVP_PKEY_asn1_add_alias(int to, int from) |
243 | { | 243 | { |
244 | EVP_PKEY_ASN1_METHOD *ameth; | 244 | EVP_PKEY_ASN1_METHOD *ameth; |
245 | |||
245 | ameth = EVP_PKEY_asn1_new(from, ASN1_PKEY_ALIAS, NULL, NULL); | 246 | ameth = EVP_PKEY_asn1_new(from, ASN1_PKEY_ALIAS, NULL, NULL); |
246 | if (!ameth) | 247 | if (!ameth) |
247 | return 0; | 248 | return 0; |
248 | ameth->pkey_base_id = to; | 249 | ameth->pkey_base_id = to; |
249 | return EVP_PKEY_asn1_add0(ameth); | 250 | if (!EVP_PKEY_asn1_add0(ameth)) { |
251 | EVP_PKEY_asn1_free(ameth); | ||
252 | return 0; | ||
253 | } | ||
254 | return 1; | ||
250 | } | 255 | } |
251 | 256 | ||
252 | int | 257 | int |
diff --git a/src/lib/libcrypto/asn1/asn_mime.c b/src/lib/libcrypto/asn1/asn_mime.c index 41b39efa7b..994531837f 100644 --- a/src/lib/libcrypto/asn1/asn_mime.c +++ b/src/lib/libcrypto/asn1/asn_mime.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn_mime.c,v 1.20 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: asn_mime.c,v 1.21 2014/07/11 13:41:59 miod 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 | */ |
@@ -675,6 +675,8 @@ STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio) | |||
675 | int len, state, save_state = 0; | 675 | int len, state, save_state = 0; |
676 | 676 | ||
677 | headers = sk_MIME_HEADER_new(mime_hdr_cmp); | 677 | headers = sk_MIME_HEADER_new(mime_hdr_cmp); |
678 | if (!headers) | ||
679 | return NULL; | ||
678 | while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) { | 680 | while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) { |
679 | /* If whitespace at line start then continuation line */ | 681 | /* If whitespace at line start then continuation line */ |
680 | if (mhdr && isspace((unsigned char)linebuf[0])) | 682 | if (mhdr && isspace((unsigned char)linebuf[0])) |
diff --git a/src/lib/libcrypto/asn1/asn_pack.c b/src/lib/libcrypto/asn1/asn_pack.c index 5d3fc3c34d..f010f87bbd 100644 --- a/src/lib/libcrypto/asn1/asn_pack.c +++ b/src/lib/libcrypto/asn1/asn_pack.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn_pack.c,v 1.13 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: asn_pack.c,v 1.14 2014/07/11 13:41:59 miod 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 1999. | 3 | * project 1999. |
4 | */ | 4 | */ |
@@ -155,8 +155,11 @@ ASN1_pack_string(void *obj, i2d_of_void *i2d, ASN1_STRING **oct) | |||
155 | *oct = octmp; | 155 | *oct = octmp; |
156 | return octmp; | 156 | return octmp; |
157 | err: | 157 | err: |
158 | if (!oct || octmp != *oct) | 158 | if (!oct || octmp != *oct) { |
159 | ASN1_STRING_free(octmp); | 159 | ASN1_STRING_free(octmp); |
160 | if (oct) | ||
161 | *oct = NULL; | ||
162 | } | ||
160 | return NULL; | 163 | return NULL; |
161 | } | 164 | } |
162 | 165 | ||
diff --git a/src/lib/libcrypto/asn1/evp_asn1.c b/src/lib/libcrypto/asn1/evp_asn1.c index 648fae9fbd..199c12f9a4 100644 --- a/src/lib/libcrypto/asn1/evp_asn1.c +++ b/src/lib/libcrypto/asn1/evp_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp_asn1.c,v 1.11 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: evp_asn1.c,v 1.12 2014/07/11 13:41: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 | * |
@@ -70,8 +70,10 @@ ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len) | |||
70 | 70 | ||
71 | if ((os = M_ASN1_OCTET_STRING_new()) == NULL) | 71 | if ((os = M_ASN1_OCTET_STRING_new()) == NULL) |
72 | return (0); | 72 | return (0); |
73 | if (!M_ASN1_OCTET_STRING_set(os, data, len)) | 73 | if (!M_ASN1_OCTET_STRING_set(os, data, len)) { |
74 | M_ASN1_OCTET_STRING_free(os); | ||
74 | return (0); | 75 | return (0); |
76 | } | ||
75 | ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os); | 77 | ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os); |
76 | return (1); | 78 | return (1); |
77 | } | 79 | } |
diff --git a/src/lib/libssl/src/crypto/asn1/ameth_lib.c b/src/lib/libssl/src/crypto/asn1/ameth_lib.c index 8701e97337..e9f73cb3a6 100644 --- a/src/lib/libssl/src/crypto/asn1/ameth_lib.c +++ b/src/lib/libssl/src/crypto/asn1/ameth_lib.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ameth_lib.c,v 1.12 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: ameth_lib.c,v 1.13 2014/07/11 13:41:59 miod 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 2006. | 3 | * project 2006. |
4 | */ | 4 | */ |
@@ -242,11 +242,16 @@ int | |||
242 | EVP_PKEY_asn1_add_alias(int to, int from) | 242 | EVP_PKEY_asn1_add_alias(int to, int from) |
243 | { | 243 | { |
244 | EVP_PKEY_ASN1_METHOD *ameth; | 244 | EVP_PKEY_ASN1_METHOD *ameth; |
245 | |||
245 | ameth = EVP_PKEY_asn1_new(from, ASN1_PKEY_ALIAS, NULL, NULL); | 246 | ameth = EVP_PKEY_asn1_new(from, ASN1_PKEY_ALIAS, NULL, NULL); |
246 | if (!ameth) | 247 | if (!ameth) |
247 | return 0; | 248 | return 0; |
248 | ameth->pkey_base_id = to; | 249 | ameth->pkey_base_id = to; |
249 | return EVP_PKEY_asn1_add0(ameth); | 250 | if (!EVP_PKEY_asn1_add0(ameth)) { |
251 | EVP_PKEY_asn1_free(ameth); | ||
252 | return 0; | ||
253 | } | ||
254 | return 1; | ||
250 | } | 255 | } |
251 | 256 | ||
252 | int | 257 | int |
diff --git a/src/lib/libssl/src/crypto/asn1/asn_mime.c b/src/lib/libssl/src/crypto/asn1/asn_mime.c index 41b39efa7b..994531837f 100644 --- a/src/lib/libssl/src/crypto/asn1/asn_mime.c +++ b/src/lib/libssl/src/crypto/asn1/asn_mime.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn_mime.c,v 1.20 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: asn_mime.c,v 1.21 2014/07/11 13:41:59 miod 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 | */ |
@@ -675,6 +675,8 @@ STACK_OF(MIME_HEADER) *mime_parse_hdr(BIO *bio) | |||
675 | int len, state, save_state = 0; | 675 | int len, state, save_state = 0; |
676 | 676 | ||
677 | headers = sk_MIME_HEADER_new(mime_hdr_cmp); | 677 | headers = sk_MIME_HEADER_new(mime_hdr_cmp); |
678 | if (!headers) | ||
679 | return NULL; | ||
678 | while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) { | 680 | while ((len = BIO_gets(bio, linebuf, MAX_SMLEN)) > 0) { |
679 | /* If whitespace at line start then continuation line */ | 681 | /* If whitespace at line start then continuation line */ |
680 | if (mhdr && isspace((unsigned char)linebuf[0])) | 682 | if (mhdr && isspace((unsigned char)linebuf[0])) |
diff --git a/src/lib/libssl/src/crypto/asn1/asn_pack.c b/src/lib/libssl/src/crypto/asn1/asn_pack.c index 5d3fc3c34d..f010f87bbd 100644 --- a/src/lib/libssl/src/crypto/asn1/asn_pack.c +++ b/src/lib/libssl/src/crypto/asn1/asn_pack.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: asn_pack.c,v 1.13 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: asn_pack.c,v 1.14 2014/07/11 13:41:59 miod 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 1999. | 3 | * project 1999. |
4 | */ | 4 | */ |
@@ -155,8 +155,11 @@ ASN1_pack_string(void *obj, i2d_of_void *i2d, ASN1_STRING **oct) | |||
155 | *oct = octmp; | 155 | *oct = octmp; |
156 | return octmp; | 156 | return octmp; |
157 | err: | 157 | err: |
158 | if (!oct || octmp != *oct) | 158 | if (!oct || octmp != *oct) { |
159 | ASN1_STRING_free(octmp); | 159 | ASN1_STRING_free(octmp); |
160 | if (oct) | ||
161 | *oct = NULL; | ||
162 | } | ||
160 | return NULL; | 163 | return NULL; |
161 | } | 164 | } |
162 | 165 | ||
diff --git a/src/lib/libssl/src/crypto/asn1/evp_asn1.c b/src/lib/libssl/src/crypto/asn1/evp_asn1.c index 648fae9fbd..199c12f9a4 100644 --- a/src/lib/libssl/src/crypto/asn1/evp_asn1.c +++ b/src/lib/libssl/src/crypto/asn1/evp_asn1.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: evp_asn1.c,v 1.11 2014/07/11 08:44:47 jsing Exp $ */ | 1 | /* $OpenBSD: evp_asn1.c,v 1.12 2014/07/11 13:41: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 | * |
@@ -70,8 +70,10 @@ ASN1_TYPE_set_octetstring(ASN1_TYPE *a, unsigned char *data, int len) | |||
70 | 70 | ||
71 | if ((os = M_ASN1_OCTET_STRING_new()) == NULL) | 71 | if ((os = M_ASN1_OCTET_STRING_new()) == NULL) |
72 | return (0); | 72 | return (0); |
73 | if (!M_ASN1_OCTET_STRING_set(os, data, len)) | 73 | if (!M_ASN1_OCTET_STRING_set(os, data, len)) { |
74 | M_ASN1_OCTET_STRING_free(os); | ||
74 | return (0); | 75 | return (0); |
76 | } | ||
75 | ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os); | 77 | ASN1_TYPE_set(a, V_ASN1_OCTET_STRING, os); |
76 | return (1); | 78 | return (1); |
77 | } | 79 | } |