}
static int
-_header_is_valid (const PedDevice *dev, GuidPartitionTableHeader_t *gpt)
+_header_is_valid (const PedDevice *dev, GuidPartitionTableHeader_t *gpt,
+ PedSector my_lba)
{
uint32_t crc, origcrc;
|| sope < sizeof (GuidPartitionEntry_t) || (UINT32_MAX >> 4) < sope)
return 0;
+ if (PED_LE64_TO_CPU (gpt->MyLBA) != my_lba)
+ return 0;
+
origcrc = gpt->HeaderCRC32;
gpt->HeaderCRC32 = 0;
crc = pth_crc32 (dev, gpt);
static int
_read_header (const PedDevice *dev, GuidPartitionTableHeader_t **gpt,
- PedSector where)
+ PedSector my_lba)
{
uint8_t *pth_raw = ped_malloc (pth_get_size (dev));
PED_ASSERT (dev != NULL, return 0);
- if (!ped_device_read (dev, pth_raw, where, GPT_HEADER_SECTORS))
+ if (!ped_device_read (dev, pth_raw, my_lba, GPT_HEADER_SECTORS))
{
free (pth_raw);
return 0;
free (pth_raw);
- if (_header_is_valid (dev, *gpt))
+ if (_header_is_valid (dev, *gpt, my_lba))
return 1;
pth_free (*gpt);
PedSector last_usable_if_grown, last_usable_min_default;
static int asked_already;
- PED_ASSERT (_header_is_valid (disk->dev, gpt), return 0);
+ // PED_ASSERT (_header_is_valid (disk->dev, gpt), return 0);
#ifndef DISCOVER_ONLY
if (PED_LE32_TO_CPU (gpt->Revision) > GPT_HEADER_REVISION_V1_02)