All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Biggers <ebiggers@kernel.org>
To: linux-crypto@vger.kernel.org, Herbert Xu <herbert@gondor.apana.org.au>
Cc: linux-kernel@vger.kernel.org, "Jason A . Donenfeld" <Jason@zx2c4.com>
Subject: [RFC/RFT PATCH 14/15] crypto: testmgr - check for skcipher_request corruption
Date: Wed, 23 Jan 2019 14:49:25 -0800	[thread overview]
Message-ID: <20190123224926.250525-15-ebiggers@kernel.org> (raw)
In-Reply-To: <20190123224926.250525-1-ebiggers@kernel.org>

From: Eric Biggers <ebiggers@google.com>

Check that algorithms do not change the skcipher_request structure, as
users may rely on submitting the request again (e.g. after copying new
data into the same source buffer) without reinitializing everything.

Signed-off-by: Eric Biggers <ebiggers@google.com>
---
 crypto/testmgr.c | 41 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 41 insertions(+)

diff --git a/crypto/testmgr.c b/crypto/testmgr.c
index fa971b83d3d2..e5f06844c793 100644
--- a/crypto/testmgr.c
+++ b/crypto/testmgr.c
@@ -1536,6 +1536,47 @@ static int test_skcipher_vec_cfg(const char *driver, int enc,
 		return err;
 	}
 
+	/* Check that the algorithm didn't overwrite things it shouldn't have */
+	if (req->cryptlen != vec->len ||
+	    req->iv != iv ||
+	    req->src != tsgls->src.sgl_ptr ||
+	    req->dst != tsgls->dst.sgl_ptr ||
+	    crypto_skcipher_reqtfm(req) != tfm ||
+	    req->base.complete != crypto_req_done ||
+	    req->base.flags != req_flags ||
+	    req->base.data != &wait) {
+		pr_err("alg: skcipher: %s %s corrupted request struct on test vector %u, cfg=\"%s\"\n",
+		       driver, op, vec_num, cfg->name);
+		if (req->cryptlen != vec->len)
+			pr_err("alg: skcipher: changed 'req->cryptlen'\n");
+		if (req->iv != iv)
+			pr_err("alg: skcipher: changed 'req->iv'\n");
+		if (req->src != tsgls->src.sgl_ptr)
+			pr_err("alg: skcipher: changed 'req->src'\n");
+		if (req->dst != tsgls->dst.sgl_ptr)
+			pr_err("alg: skcipher: changed 'req->dst'\n");
+		if (crypto_skcipher_reqtfm(req) != tfm)
+			pr_err("alg: skcipher: changed 'req->base.tfm'\n");
+		if (req->base.complete != crypto_req_done)
+			pr_err("alg: skcipher: changed 'req->base.complete'\n");
+		if (req->base.flags != req_flags)
+			pr_err("alg: skcipher: changed 'req->base.flags'\n");
+		if (req->base.data != &wait)
+			pr_err("alg: skcipher: changed 'req->base.data'\n");
+		return -EINVAL;
+	}
+	if (is_test_sglist_corrupted(&tsgls->src)) {
+		pr_err("alg: skcipher: %s %s corrupted src sgl on test vector %u, cfg=\"%s\"\n",
+		       driver, op, vec_num, cfg->name);
+		return -EINVAL;
+	}
+	if (tsgls->dst.sgl_ptr != tsgls->src.sgl &&
+	    is_test_sglist_corrupted(&tsgls->dst)) {
+		pr_err("alg: skcipher: %s %s corrupted dst sgl on test vector %u, cfg=\"%s\"\n",
+		       driver, op, vec_num, cfg->name);
+		return -EINVAL;
+	}
+
 	/* Check for the correct output (ciphertext or plaintext) */
 	err = verify_correct_output(&tsgls->dst, enc ? vec->ctext : vec->ptext,
 				    vec->len, 0, true);
-- 
2.20.1.321.g9e740568ce-goog


  parent reply	other threads:[~2019-01-23 22:53 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-23 22:49 [RFC/RFT PATCH 00/15] crypto: improved skcipher, aead, and hash tests Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 01/15] crypto: aegis - fix handling chunked inputs Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 02/15] crypto: morus " Eric Biggers
2019-01-31  9:05   ` Ondrej Mosnacek
2019-02-01  5:25     ` Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 03/15] crypto: x86/aegis - fix handling chunked inputs and MAY_SLEEP Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 04/15] crypto: x86/morus " Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 05/15] crypto: x86/aesni-gcm - fix crash on empty plaintext Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 06/15] crypto: ahash - fix another early termination in hash walk Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 07/15] crypto: arm64/aes-neonbs - fix returning final keystream block Eric Biggers
2019-01-24 12:11   ` Ard Biesheuvel
2019-01-23 22:49 ` [RFC/RFT PATCH 08/15] crypto: testmgr - add testvec_config struct and helper functions Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 09/15] crypto: testmgr - introduce CONFIG_CRYPTO_MANAGER_EXTRA_TESTS Eric Biggers
2019-02-01  5:31   ` Herbert Xu
2019-02-01  7:00     ` Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 10/15] crypto: testmgr - implement random testvec_config generation Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 11/15] crypto: testmgr - convert skcipher testing to use testvec_configs Eric Biggers
2019-01-24 12:36   ` Ard Biesheuvel
2019-01-24 13:14     ` Corentin Labbe
2019-01-24 14:09       ` Ard Biesheuvel
2019-01-23 22:49 ` [RFC/RFT PATCH 12/15] crypto: testmgr - convert aead " Eric Biggers
2019-01-23 22:49 ` [RFC/RFT PATCH 13/15] crypto: testmgr - convert hash " Eric Biggers
2019-01-23 22:49 ` Eric Biggers [this message]
2019-01-23 22:49 ` [RFC/RFT PATCH 15/15] crypto: testmgr - check for aead_request corruption Eric Biggers
2019-01-24  8:48 ` [RFC/RFT PATCH 00/15] crypto: improved skcipher, aead, and hash tests Eric Biggers
2019-01-24  8:50   ` Ard Biesheuvel
2019-01-24  9:23     ` Herbert Xu
2019-01-24 10:16       ` Ard Biesheuvel
2019-01-24 10:20         ` Herbert Xu
2019-01-24 18:22       ` Eric Biggers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190123224926.250525-15-ebiggers@kernel.org \
    --to=ebiggers@kernel.org \
    --cc=Jason@zx2c4.com \
    --cc=herbert@gondor.apana.org.au \
    --cc=linux-crypto@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.