From: Mimi Zohar Date: Fri, 21 Aug 2009 18:32:49 +0000 (-0400) Subject: ima: hashing large files bug fix X-Git-Tag: upstream/snapshot3+hdmi~17803^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=16bfa38b1936212428cb38fbfbbb8f6c62b8d81f;p=platform%2Fadaptation%2Frenesas_rcar%2Frenesas_kernel.git ima: hashing large files bug fix Hashing files larger than INT_MAX causes process to loop. Dependent on redefining kernel_read() offset type to loff_t. (http://bugzilla.kernel.org/show_bug.cgi?id=13909) Cc: stable@kernel.org Signed-off-by: Mimi Zohar Signed-off-by: James Morris --- diff --git a/security/integrity/ima/ima_crypto.c b/security/integrity/ima/ima_crypto.c index 63003a6..46642a1 100644 --- a/security/integrity/ima/ima_crypto.c +++ b/security/integrity/ima/ima_crypto.c @@ -45,9 +45,9 @@ int ima_calc_hash(struct file *file, char *digest) { struct hash_desc desc; struct scatterlist sg[1]; - loff_t i_size; + loff_t i_size, offset = 0; char *rbuf; - int rc, offset = 0; + int rc; rc = init_desc(&desc); if (rc != 0) @@ -67,6 +67,8 @@ int ima_calc_hash(struct file *file, char *digest) rc = rbuf_len; break; } + if (rbuf_len == 0) + break; offset += rbuf_len; sg_init_one(sg, rbuf, rbuf_len);