From: Jonas Maebe <jonas.maebe@elis.ugent.be>
Date: Sun, 8 Dec 2013 16:20:30 +0000 (+0100)
Subject: cryptodev_digest_copy: return error if allocating dstate->mac_data fails
X-Git-Tag: master-post-reformat~502
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=d6f69ae5475f514ca6f81360ac8adafe1294a2c6;p=oweals%2Fopenssl.git

cryptodev_digest_copy: return error if allocating dstate->mac_data fails

Signed-off-by: Kurt Roeckx <kurt@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
---

diff --git a/crypto/engine/eng_cryptodev.c b/crypto/engine/eng_cryptodev.c
index c823eebe7c..85bc1e854e 100644
--- a/crypto/engine/eng_cryptodev.c
+++ b/crypto/engine/eng_cryptodev.c
@@ -901,17 +901,22 @@ static int cryptodev_digest_copy(EVP_MD_CTX *to,const EVP_MD_CTX *from)
 	if (ioctl(dstate->d_fd, CIOCGSESSION, sess) < 0) {
 		put_dev_crypto(dstate->d_fd);
 		dstate->d_fd = -1;
-		printf("cryptodev_digest_init: Open session failed\n");
+		printf("cryptodev_digest_copy: Open session failed\n");
 		return (0);
 	}
 
 	if (fstate->mac_len != 0) {
 	        if (fstate->mac_data != NULL)
-	                {
-        		dstate->mac_data = OPENSSL_malloc(fstate->mac_len);
-	        	memcpy(dstate->mac_data, fstate->mac_data, fstate->mac_len);
-           		dstate->mac_len = fstate->mac_len;
-	        	}
+			{
+			dstate->mac_data = OPENSSL_malloc(fstate->mac_len);
+			if (dstate->mac_data == NULL)
+				{
+				printf("cryptodev_digest_copy: mac_data allocation failed\n");
+				return (0);
+				}
+			memcpy(dstate->mac_data, fstate->mac_data, fstate->mac_len);
+			dstate->mac_len = fstate->mac_len;
+			}
 	}
 
 	return 1;