crypto: shash - Fix async finup handling of null digest
When shash_ahash_finup encounters a null request, we end up not calling the underlying final function. This patch fixes that. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
Родитель
fa64966473
Коммит
cbc86b9161
|
@ -240,12 +240,17 @@ int shash_ahash_finup(struct ahash_request *req, struct shash_desc *desc)
|
|||
struct crypto_hash_walk walk;
|
||||
int nbytes;
|
||||
|
||||
for (nbytes = crypto_hash_walk_first(req, &walk); nbytes > 0;
|
||||
nbytes = crypto_hash_walk_done(&walk, nbytes))
|
||||
nbytes = crypto_hash_walk_first(req, &walk);
|
||||
if (!nbytes)
|
||||
return crypto_shash_final(desc, req->result);
|
||||
|
||||
do {
|
||||
nbytes = crypto_hash_walk_last(&walk) ?
|
||||
crypto_shash_finup(desc, walk.data, nbytes,
|
||||
req->result) :
|
||||
crypto_shash_update(desc, walk.data, nbytes);
|
||||
nbytes = crypto_hash_walk_done(&walk, nbytes);
|
||||
} while (nbytes > 0);
|
||||
|
||||
return nbytes;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче