+2010-12-19 Vladimir Serbinenko <phcoder@gmail.com>
+
+ * grub-core/fs/affs.c (grub_affs_mount): Read data->bblock.rootblock
+ rather than assuming than rootblock is exactly in the middle.
+ (grub_affs_label): Likewise.
+
2010-12-19 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/fs/affs.c (grub_affs_fs) [GRUB_UTIL]: Explicitly set
rblock = (struct grub_affs_rblock *) rootblock;
/* Read the rootblock. */
- grub_disk_read (disk, (disk->total_sectors >> 1) + blocksize, 0,
+ grub_disk_read (disk, grub_be_to_cpu32 (data->bblock.rootblock), 0,
GRUB_DISK_SECTOR_SIZE * 16, rootblock);
if (grub_errno)
goto fail;
data->disk = disk;
data->htsize = grub_be_to_cpu32 (rblock->htsize);
data->diropen.data = data;
- data->diropen.block = (disk->total_sectors >> 1);
+ data->diropen.block = grub_be_to_cpu32 (data->bblock.rootblock);
grub_free (rootblock);
{
/* The rootblock maps quite well on a file header block, it's
something we can use here. */
- grub_disk_read (data->disk, disk->total_sectors >> 1,
+ grub_disk_read (data->disk, grub_be_to_cpu32 (data->bblock.rootblock),
data->blocksize * (GRUB_DISK_SECTOR_SIZE
- GRUB_AFFS_FILE_LOCATION),
sizeof (file), &file);