Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1388513 > unrolled thread

[PATCH 3.16 217/217] crypto: gcm - Fix rfc4543 decryption crash

Started byBen Hutchings <ben@decadent.org.uk>
First post2016-04-27 02:40 +0200
Last post2016-04-27 02:40 +0200
Articles 1 — 1 participant

Back to article view | Back to linux.kernel

This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by below is the oldest one visible, not the original post.


Contents

  [PATCH 3.16 217/217] crypto: gcm - Fix rfc4543 decryption crash Ben Hutchings <ben@decadent.org.uk> - 2016-04-27 02:40 +0200

#1388513 — [PATCH 3.16 217/217] crypto: gcm - Fix rfc4543 decryption crash

FromBen Hutchings <ben@decadent.org.uk>
Date2016-04-27 02:40 +0200
Subject[PATCH 3.16 217/217] crypto: gcm - Fix rfc4543 decryption crash
Message-ID<rslGi-kK-29@gated-at.bofh.it>
3.16.35-rc1 review patch.  If anyone has any objections, please let me know.

------------------

From: Herbert Xu <herbert@gondor.apana.org.au>

This bug has already bee fixed upstream since 4.2.  However, it
was fixed during the AEAD conversion so no fix was backported to
the older kernels.

[bwh: The upstream commit was adcbc688fe2f ("crypto: gcm - Convert to
new AEAD interface")]

When we do an RFC 4543 decryption, we will end up writing the
ICV beyond the end of the dst buffer.  This should lead to a
crash but for some reason it was never noticed.

This patch fixes it by only writing back the ICV for encryption.

Fixes: d733ac90f9fe ("crypto: gcm - fix rfc4543 to handle async...")
Reported-by: Patrick Meyer <patrick.meyer@vasgard.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
---
--- a/crypto/gcm.c
+++ b/crypto/gcm.c
@@ -1173,6 +1173,9 @@ static struct aead_request *crypto_rfc45
 	aead_request_set_tfm(subreq, ctx->child);
 	aead_request_set_callback(subreq, req->base.flags, crypto_rfc4543_done,
 				  req);
+	if (!enc)
+		aead_request_set_callback(subreq, req->base.flags,
+					  req->base.complete, req->base.data);
 	aead_request_set_crypt(subreq, cipher, cipher, enc ? 0 : authsize, iv);
 	aead_request_set_assoc(subreq, assoc, assoclen);
 

[toc] | [standalone]


Back to top | Article view | linux.kernel


csiph-web