Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cbc86b91 authored by Herbert Xu's avatar Herbert Xu
Browse files

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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent fa649664
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -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;
}