From 74763e9615561233ec6dbce2cf3f39036cb46ecf Mon Sep 17 00:00:00 2001 From: Vladimir Serbinenko Date: Sat, 21 Dec 2013 14:28:14 +0100 Subject: [PATCH] * util/misc.c (grub_util_get_image_size): Check for overflow. --- ChangeLog | 4 ++++ util/misc.c | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ecf8ba19b..5ab866fbf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2013-12-21 Vladimir Serbinenko + + * util/misc.c (grub_util_get_image_size): Check for overflow. + 2013-12-21 Vladimir Serbinenko * grub-core/disk/raid6_recover.c (grub_raid_block_mulx): Use grub_size_t diff --git a/util/misc.c b/util/misc.c index c5541ca95..b0e023ecd 100644 --- a/util/misc.c +++ b/util/misc.c @@ -79,6 +79,7 @@ grub_util_get_image_size (const char *path) { FILE *f; size_t ret; + off_t sz; f = grub_util_fopen (path, "rb"); @@ -87,7 +88,10 @@ grub_util_get_image_size (const char *path) fseeko (f, 0, SEEK_END); - ret = ftello (f); + sz = ftello (f); + if (sz != (size_t) sz) + grub_util_error (_("file `%s' is too big"), path); + ret = (size_t) sz; fclose (f);