summaryrefslogtreecommitdiffstats
path: root/crypto
diff options
context:
space:
mode:
authorSteffen Klassert <steffen.klassert@secunet.com>2009-04-15 20:45:03 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2009-04-15 20:45:03 +0800
commitabe5fa7899fb5809ddc7336d8dd0edd5b2b96665 (patch)
treec6fe662b346cbad62b6577ae91dd408f9ab3d63c /crypto
parent295c01f90db2b8b8394e1f7cde59b96d71f98e07 (diff)
downloadlinux-abe5fa7899fb5809ddc7336d8dd0edd5b2b96665.tar.bz2
crypto: eseqiv - Fix IV generation for sync algorithms
If crypto_ablkcipher_encrypt() returns synchronous, eseqiv_complete2() is called even if req->giv is already the pointer to the generated IV. The generated IV is overwritten with some random data in this case. This patch fixes this by calling eseqiv_complete2() just if the generated IV has to be copied to req->giv. Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Diffstat (limited to 'crypto')
-rw-r--r--crypto/eseqiv.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/eseqiv.c b/crypto/eseqiv.c
index 2a342c8e52b3..3ca3b669d5d5 100644
--- a/crypto/eseqiv.c
+++ b/crypto/eseqiv.c
@@ -153,7 +153,8 @@ static int eseqiv_givencrypt(struct skcipher_givcrypt_request *req)
if (err)
goto out;
- eseqiv_complete2(req);
+ if (giv != req->giv)
+ eseqiv_complete2(req);
out:
return err;