summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2012-05-10 13:28:28 +0000
committerDr. Stephen Henson <steve@openssl.org>2012-05-10 13:28:28 +0000
commit1e4406a854c4fb1f18b1332cbd17bc8c3c6ec2cd (patch)
tree8b06081536ee251d28922fc03902164a7520fcd8
parent94fbee800b6fe9d716cb6df6280e525078cd3eb1 (diff)
Reported by: Solar Designer of Openwall
Make sure tkeylen is initialised properly when encrypting CMS messages.
-rw-r--r--CHANGES4
-rw-r--r--crypto/cms/cms_enc.c4
2 files changed, 5 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index a9a654991d..3b78496bf2 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4,7 +4,9 @@
Changes between 1.0.0i and 1.0.0j [xx XXX xxxx]
- *)
+ *) Initialise tkeylen properly when encrypting CMS messages.
+ Thanks to Solar Designer of Openwall for reporting this issue.
+ [Steve Henson]
Changes between 1.0.0h and 1.0.0i [19 Apr 2012]
diff --git a/crypto/cms/cms_enc.c b/crypto/cms/cms_enc.c
index 580083b45f..f873ce3794 100644
--- a/crypto/cms/cms_enc.c
+++ b/crypto/cms/cms_enc.c
@@ -139,10 +139,10 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec)
CMS_R_CIPHER_PARAMETER_INITIALISATION_ERROR);
goto err;
}
+ tkeylen = EVP_CIPHER_CTX_key_length(ctx);
/* Generate random session key */
if (!enc || !ec->key)
{
- tkeylen = EVP_CIPHER_CTX_key_length(ctx);
tkey = OPENSSL_malloc(tkeylen);
if (!tkey)
{
@@ -174,7 +174,7 @@ BIO *cms_EncryptedContent_init_bio(CMS_EncryptedContentInfo *ec)
/* Only reveal failure if debugging so we don't
* leak information which may be useful in MMA.
*/
- if (ec->debug)
+ if (enc || ec->debug)
{
CMSerr(CMS_F_CMS_ENCRYPTEDCONTENT_INIT_BIO,
CMS_R_INVALID_KEY_LENGTH);