From: Herbert Xu Date: Mon, 29 Jan 2024 14:17:11 +0000 (+0800) Subject: crypto: cbc - Ensure statesize is zero X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=69fba378edcaffba7bc7d299fdee02e377069d30;p=linux.git 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: 47309ea13591 ("crypto: arc4 - Add internal state") Signed-off-by: Herbert Xu --- diff --git a/crypto/cbc.c b/crypto/cbc.c index eedddef9ce40c..e81918ca68b78 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;