Grub partition get start returns in 512B blocks. Can I have more details like which partmap you use?
On Mon, 23 Jul 2018, 09:54 Mihai Moldovan, <io...@ionic.de> wrote: > When reading data off a disk, sector values are based on the disk sector > length. > > Within grub_util_fd_open_device(), the start of the partition was taken > directly from grub's partition information structure, which uses the > internal sector length (currently 512b), but never transformed to the > disk's sector length. > > Subsequent calculations were all wrong for devices that have a diverging > sector length and the functions eventually skipped to the wrong stream > location, reading invalid data. > --- > grub-core/osdep/linux/hostdisk.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/grub-core/osdep/linux/hostdisk.c > b/grub-core/osdep/linux/hostdisk.c > index 06179fca7..8b92f8528 100644 > --- a/grub-core/osdep/linux/hostdisk.c > +++ b/grub-core/osdep/linux/hostdisk.c > @@ -374,7 +374,8 @@ grub_util_fd_open_device (const grub_disk_t disk, > grub_disk_addr_t sector, int f > char dev[PATH_MAX]; > grub_disk_addr_t part_start = 0; > > - part_start = grub_partition_get_start (disk->partition); > + part_start = grub_partition_get_start (disk->partition) > + >> (disk->log_sector_size - GRUB_DISK_SECTOR_BITS); > > strncpy (dev, grub_util_biosdisk_get_osdev (disk), sizeof (dev) - 1); > dev[sizeof(dev) - 1] = '\0'; > -- > 2.15.1 > > > _______________________________________________ > Grub-devel mailing list > Grub-devel@gnu.org > https://lists.gnu.org/mailman/listinfo/grub-devel >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel