diff options
Diffstat (limited to 'crypto/hmac.c')
| -rw-r--r-- | crypto/hmac.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/crypto/hmac.c b/crypto/hmac.c index 92871dc2a63e..e74730224f0a 100644 --- a/crypto/hmac.c +++ b/crypto/hmac.c @@ -195,11 +195,15 @@ static int hmac_create(struct crypto_template *tmpl, struct rtattr **tb)  	salg = shash_attr_alg(tb[1], 0, 0);  	if (IS_ERR(salg))  		return PTR_ERR(salg); +	alg = &salg->base; +	/* The underlying hash algorithm must be unkeyed */  	err = -EINVAL; +	if (crypto_shash_alg_has_setkey(salg)) +		goto out_put_alg; +  	ds = salg->digestsize;  	ss = salg->statesize; -	alg = &salg->base;  	if (ds > alg->cra_blocksize ||  	    ss < alg->cra_blocksize)  		goto out_put_alg; |