summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2024-01-29 22:17:11 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2024-02-02 18:08:12 +0800
commitca9069561198164afc252b66fb904cf484fc8138 (patch)
tree0e17ac556f02b65a870091c8c8c288a2707fafa3
parenta7b7a2e72df3d05a637c8aee79ba364eb57754f7 (diff)
downloadlinux-crypto-ca9069561198164afc252b66fb904cf484fc8138.tar.gz
linux-crypto-ca9069561198164afc252b66fb904cf484fc8138.zip
crypto: cbc - Ensure statesize is zero
The cbc template should not be applied on stream ciphers, especially ones that have internal state. Enforce this by checking the state size when the instance is created. Reported-by: syzbot+050eeedd6c285d8c42f2@syzkaller.appspotmail.com Fixes: 67d9a2e93f68 ("crypto: arc4 - Add internal state") Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--crypto/cbc.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/crypto/cbc.c b/crypto/cbc.c
index eedddef9..e81918ca 100644
--- a/crypto/cbc.c
+++ b/crypto/cbc.c
@@ -148,6 +148,9 @@ static int crypto_cbc_create(struct crypto_template *tmpl, struct rtattr **tb)
if (!is_power_of_2(inst->alg.co.base.cra_blocksize))
goto out_free_inst;
+ if (inst->alg.co.statesize)
+ goto out_free_inst;
+
inst->alg.encrypt = crypto_cbc_encrypt;
inst->alg.decrypt = crypto_cbc_decrypt;