lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date:   Tue, 14 Feb 2017 16:30:46 +0100
From:   Torsten Duwe <duwe@....de>
To:     Jiri Slaby <jslaby@...e.cz>
Cc:     stable@...r.kernel.org, Herbert Xu <herbert@...dor.apana.org.au>,
        linux-kernel@...r.kernel.org
Subject: [PATCH] Fix af_alg in 3.12

On Fri, Feb 03, 2017 at 01:05:48PM +0100, Torsten Duwe wrote:
> 
> If Herbert does not have a better idea, I suggest to back out this change and fix
> dynamically allocated key structures for the individual algorithms instead, for
> the older branches.

So, the solution IMHO is to revert

b2a0707817d3dec83652bb460a7775613058aedd
f382cd5ac26674877143fa7d9c0ea23c6640e706
c25e22ff51d3bebf579a054aecbaa98c81149c02
1e3f8a31f01e5967fcf413d72832ce41aa4efd1d
79adba68c32883c6559dc80040e97c35e208c7f1
82a0aa2c08de674191cf5e99b649af145c5ade25

that is the whole sequence from 82a0aa2c08de674191..b2a0707817d3dec836
backwards sans b9da7c51a11a2e7 which is a separate, unrelated fix.

This series aimed to fix the whole class of problems and creates and fixes
its own ABI breakage. But since that problem class contains exactly
1 element, fix instead the one broken algorithm with a dynamically
allocated member in its context that gets initialised during setkey.

Signed-off-by: Torsten Duwe <duwe@...e.de>
Cc: <stable@...r.kernel.org> # v3.0+

diff --git a/crypto/lrw.c b/crypto/lrw.c
index 6f9908a..4c9257d 100644
--- a/crypto/lrw.c
+++ b/crypto/lrw.c
@@ -150,6 +150,9 @@ static int crypt(struct blkcipher_desc *d,
 	u8 *wsrc;
 	u8 *wdst;
 
+	if (!(ctx->table.table))
+		return -ENOKEY;
+
 	err = blkcipher_walk_virt(d, w);
 	if (!(avail = w->nbytes))
 		return err;
@@ -229,6 +232,9 @@ int lrw_crypt(struct blkcipher_desc *desc, struct scatterlist *sdst,
 
 	BUG_ON(max_blks < 1);
 
+	if (!ctx->table)
+		return -ENOKEY;
+
 	blkcipher_walk_init(&walk, sdst, ssrc, nbytes);
 
 	err = blkcipher_walk_virt(desc, &walk);

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ