osdep/freebsd: Fix partition calculation for EBR entries

For EBR partitions, "start" is the relative starting sector of the EBR
header itself, whereas "offset" is the relative starting byte of the
partition's contents, excluding the EBR header and any padding. Thus we
must use "offset", and divide by the sector size to convert to sectors.

Fixes Debian bug #923253.

Signed-off-by: James Clarke <jrtc27@jrtc27.com>
Reviewed-by: Colin Watson <cjwatson@ubuntu.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
James Clarke authored and Daniel Kiper committed 2019-03-05 10:21:54 +01:00
1 parent 686db96646
commit 222cb8f6df
1 file changed
+2 -2
+2 -2
View File
@@ -338,8 +338,8 @@ grub_util_follow_gpart_up (const char *name, grub_disk_addr_t *off_out, char **n
grub_util_follow_gpart_up (name_tmp, &off, name_out);
free (name_tmp);
LIST_FOREACH (config, &provider->lg_config, lg_config)
if (strcasecmp (config->lg_name, "start") == 0)
off += strtoull (config->lg_val, 0, 10);
if (strcasecmp (config->lg_name, "offset") == 0)
off += strtoull (config->lg_val, 0, 10) / provider->lg_sectorsize;
if (off_out)
*off_out = off;
return;