X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=EdkModulePkg%2FUniversal%2FDisk%2FPartition%2FDxe%2FElTorito.c;fp=EdkModulePkg%2FUniversal%2FDisk%2FPartition%2FDxe%2FElTorito.c;h=88d0c7223d4a3c68427065afe30295ee45f4b534;hp=27beba171b6fd4e129e8076b36c1fb1723d66ecb;hb=3114b33496b816233063ad193d194e9ac0531ad0;hpb=fc773f6aa7dccfb271e452d8b2e94d18be86dc94 diff --git a/EdkModulePkg/Universal/Disk/Partition/Dxe/ElTorito.c b/EdkModulePkg/Universal/Disk/Partition/Dxe/ElTorito.c index 27beba171b..88d0c7223d 100644 --- a/EdkModulePkg/Universal/Disk/Partition/Dxe/ElTorito.c +++ b/EdkModulePkg/Universal/Disk/Partition/Dxe/ElTorito.c @@ -133,7 +133,7 @@ Returns: // the 32-bit numerical values is stored in Both-byte orders // if (VolDescriptor->Type == CDVOL_TYPE_CODED) { - VolSpaceSize = VolDescriptor->VolSpaceSize[1]; + VolSpaceSize = VolDescriptor->VolSpaceSize[0]; } // // Is it an El Torito volume descriptor? @@ -242,7 +242,14 @@ Returns: BootEntry++; CdDev.PartitionStart = Catalog->Boot.Lba; if (SectorCount < 2) { - CdDev.PartitionSize = VolSpaceSize; + // + // When the SectorCount < 2, set the Partition as the whole CD. + // + if (VolSpaceSize > (Media->LastBlock + 1)) { + CdDev.PartitionSize = (UINT32)(Media->LastBlock - Catalog->Boot.Lba + 1); + } else { + CdDev.PartitionSize = (UINT32)(VolSpaceSize - Catalog->Boot.Lba); + } } else { CdDev.PartitionSize = DivU64x32 ( MultU64x32 (