diff --git a/util/grub-editenv.c b/util/grub-editenv.c index f3662c95b..db6f187cc 100644 --- a/util/grub-editenv.c +++ b/util/grub-editenv.c @@ -125,6 +125,7 @@ open_envblk_file (const char *name) { FILE *fp; char *buf; + long loc; size_t size; grub_envblk_t envblk; @@ -143,7 +144,12 @@ open_envblk_file (const char *name) grub_util_error (_("cannot seek `%s': %s"), name, strerror (errno)); - size = (size_t) ftell (fp); + loc = ftell (fp); + if (loc < 0) + grub_util_error (_("cannot get file location `%s': %s"), name, + strerror (errno)); + + size = (size_t) loc; if (fseek (fp, 0, SEEK_SET) < 0) grub_util_error (_("cannot seek `%s': %s"), name,