Messages in this thread Patch in this message | | | Date | Fri, 04 Sep 2009 17:13:46 -0700 | From | Greg KH <> | Subject | [patch 11/71] ima: hashing large files bug fix |
| |
2.6.30-stable review patch. If anyone has any objections, please let us know.
------------------ From: Mimi Zohar <zohar@linux.vnet.ibm.com>
commit 16bfa38b1936212428cb38fbfbbb8f6c62b8d81f upstream.
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)
Signed-off-by: Mimi Zohar <zohar@us.ibm.com> Signed-off-by: James Morris <jmorris@namei.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
--- security/integrity/ima/ima_crypto.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
--- 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, cha { 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, cha rc = rbuf_len; break; } + if (rbuf_len == 0) + break; offset += rbuf_len; sg_init_one(sg, rbuf, rbuf_len);
| |