diff options
Diffstat (limited to 'crypto/ccm.c')
| -rw-r--r-- | crypto/ccm.c | 7 | 
1 files changed, 4 insertions, 3 deletions
diff --git a/crypto/ccm.c b/crypto/ccm.c index 499c91717d9..1df84217f7c 100644 --- a/crypto/ccm.c +++ b/crypto/ccm.c @@ -271,7 +271,8 @@ static int crypto_ccm_auth(struct aead_request *req, struct scatterlist *plain,  	}  	/* compute plaintext into mac */ -	get_data_to_compute(cipher, pctx, plain, cryptlen); +	if (cryptlen) +		get_data_to_compute(cipher, pctx, plain, cryptlen);  out:  	return err; @@ -363,7 +364,7 @@ static void crypto_ccm_decrypt_done(struct crypto_async_request *areq,  	if (!err) {  		err = crypto_ccm_auth(req, req->dst, cryptlen); -		if (!err && memcmp(pctx->auth_tag, pctx->odata, authsize)) +		if (!err && crypto_memneq(pctx->auth_tag, pctx->odata, authsize))  			err = -EBADMSG;  	}  	aead_request_complete(req, err); @@ -422,7 +423,7 @@ static int crypto_ccm_decrypt(struct aead_request *req)  		return err;  	/* verify */ -	if (memcmp(authtag, odata, authsize)) +	if (crypto_memneq(authtag, odata, authsize))  		return -EBADMSG;  	return err;  | 
