* grub-core/fs/btrfs.c (grub_btrfs_device): New field size.
(read_sblock): Don't attempt to read superblocks outside the disk size.
This commit is contained in:
parent
ff4479581d
commit
e06c2e7abc
2 changed files with 11 additions and 1 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
2012-01-25 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
|
* grub-core/fs/btrfs.c (grub_btrfs_device): New field size.
|
||||||
|
(read_sblock): Don't attempt to read superblocks outside the disk size.
|
||||||
|
|
||||||
2012-01-25 Vladimir Serbinenko <phcoder@gmail.com>
|
2012-01-25 Vladimir Serbinenko <phcoder@gmail.com>
|
||||||
|
|
||||||
* grub-core/fs/nilfs2.c (grub_nilfs2_load_sb): Use device size from
|
* grub-core/fs/nilfs2.c (grub_nilfs2_load_sb): Use device size from
|
||||||
|
|
|
@ -49,7 +49,8 @@ typedef grub_uint16_t grub_btrfs_uuid_t[8];
|
||||||
struct grub_btrfs_device
|
struct grub_btrfs_device
|
||||||
{
|
{
|
||||||
grub_uint64_t device_id;
|
grub_uint64_t device_id;
|
||||||
grub_uint8_t dummy[0x62 - 8];
|
grub_uint64_t size;
|
||||||
|
grub_uint8_t dummy[0x62 - 0x10];
|
||||||
} __attribute__ ((packed));
|
} __attribute__ ((packed));
|
||||||
|
|
||||||
struct grub_btrfs_superblock
|
struct grub_btrfs_superblock
|
||||||
|
@ -248,6 +249,10 @@ read_sblock (grub_disk_t disk, struct grub_btrfs_superblock *sb)
|
||||||
for (i = 0; i < ARRAY_SIZE (superblock_sectors); i++)
|
for (i = 0; i < ARRAY_SIZE (superblock_sectors); i++)
|
||||||
{
|
{
|
||||||
struct grub_btrfs_superblock sblock;
|
struct grub_btrfs_superblock sblock;
|
||||||
|
/* Don't try additional superblocks beyond device size. */
|
||||||
|
if (i && (grub_le_to_cpu64 (sblock.this_device.size)
|
||||||
|
>> GRUB_DISK_SECTOR_BITS) <= superblock_sectors[i])
|
||||||
|
break;
|
||||||
err = grub_disk_read (disk, superblock_sectors[i], 0,
|
err = grub_disk_read (disk, superblock_sectors[i], 0,
|
||||||
sizeof (sblock), &sblock);
|
sizeof (sblock), &sblock);
|
||||||
if (err == GRUB_ERR_OUT_OF_RANGE)
|
if (err == GRUB_ERR_OUT_OF_RANGE)
|
||||||
|
|
Loading…
Reference in a new issue