Commit 16bfa38b authored by Mimi Zohar's avatar Mimi Zohar Committed by James Morris

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: default avatarMimi Zohar <zohar@us.ibm.com>
Signed-off-by: default avatarJames Morris <jmorris@namei.org>
parent 6777d773
...@@ -45,9 +45,9 @@ int ima_calc_hash(struct file *file, char *digest) ...@@ -45,9 +45,9 @@ int ima_calc_hash(struct file *file, char *digest)
{ {
struct hash_desc desc; struct hash_desc desc;
struct scatterlist sg[1]; struct scatterlist sg[1];
loff_t i_size; loff_t i_size, offset = 0;
char *rbuf; char *rbuf;
int rc, offset = 0; int rc;
rc = init_desc(&desc); rc = init_desc(&desc);
if (rc != 0) if (rc != 0)
...@@ -67,6 +67,8 @@ int ima_calc_hash(struct file *file, char *digest) ...@@ -67,6 +67,8 @@ int ima_calc_hash(struct file *file, char *digest)
rc = rbuf_len; rc = rbuf_len;
break; break;
} }
if (rbuf_len == 0)
break;
offset += rbuf_len; offset += rbuf_len;
sg_init_one(sg, rbuf, rbuf_len); sg_init_one(sg, rbuf, rbuf_len);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment