Since the skcipher conversion in commit 0605c41cc53c ("crypto: cts - Convert to skcipher"), the cts code tacitly assumes that the underlying CBC encryption transform performed on the first part of the plaintext returns an IV in req->iv that is suitable for encrypting the final bit. While this is usually the case, it is not mandated by the API, and given that the CTS code already accesses the ciphertext scatterlist to retrieve those bytes, we can simply copy them into req->iv before proceeding. Fixes: 0605c41cc53c ("crypto: cts - Convert to skcipher") Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> --- crypto/cts.c | 1 + 1 file changed, 1 insertion(+) diff --git a/crypto/cts.c b/crypto/cts.c index a1335d6c35fb..3270ce8f278d 100644 --- a/crypto/cts.c +++ b/crypto/cts.c @@ -114,6 +114,7 @@ static int cts_cbc_encrypt(struct skcipher_request *req) sg = scatterwalk_ffwd(rctx->sg, req->dst, offset - bsize); scatterwalk_map_and_copy(d + bsize, sg, 0, bsize, 0); + memcpy(req->iv, d + bsize, bsize); memset(d, 0, bsize); scatterwalk_map_and_copy(d, req->src, offset, lastn, 0); -- 2.7.4 -- To unsubscribe from this list: send the line "unsubscribe linux-crypto" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html