diff --git a/ChangeLog b/ChangeLog index b23f0698d..6f2924e41 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2014-12-07 Peter Nelson + + * grub-core/fs/ext2.c (grub_ext2_read_block): Support large sparse + chunks. + 2014-12-07 Andrei Borzenkov * util/grub-mkconfig_lib.in (version_test_gt): Remove redundant diff --git a/grub-core/fs/ext2.c b/grub-core/fs/ext2.c index 5f7a2b9d5..217771d02 100644 --- a/grub-core/fs/ext2.c +++ b/grub-core/fs/ext2.c @@ -484,6 +484,10 @@ grub_ext2_read_block (grub_fshelp_node_t node, grub_disk_addr_t fileblock) indirect: do { + /* If the indirect block is zero, all child blocks are absent + (i.e. filled with zeros.) */ + if (indir == 0) + return 0; if (grub_disk_read (data->disk, ((grub_disk_addr_t) grub_le_to_cpu32 (indir)) << log2_blksz,