When checking if a block list goes past the end of the disk, make sure
the total size of the disk is in GRUB native sector sizes, otherwise there
will be blocks at the end of the disk inaccessible by block lists.
Signed-off-by: Glenn Washburn <development@efficientek.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
unsigned i;
grub_disk_t disk = file->device->disk;
struct grub_fs_block *blocks;
+ grub_size_t max_sectors;
/* First, count the number of blocks. */
do
return 0;
file->size = 0;
+ max_sectors = grub_disk_from_native_sector (disk, disk->total_sectors);
p = (char *) name;
for (i = 0; i < num; i++)
{
goto fail;
}
- if (disk->total_sectors < blocks[i].offset + blocks[i].length)
+ if (max_sectors < blocks[i].offset + blocks[i].length)
{
grub_error (GRUB_ERR_BAD_FILENAME, "beyond the total sectors");
goto fail;