diff --git a/Include/Library/OcAppleDiskImageLib.h b/Include/Library/OcAppleDiskImageLib.h index d4e02dbd..4511bd79 100644 --- a/Include/Library/OcAppleDiskImageLib.h +++ b/Include/Library/OcAppleDiskImageLib.h @@ -23,8 +23,8 @@ typedef struct { UINT8 *Buffer; UINTN Length; - // Disk image info. - APPLE_DISK_IMAGE_TRAILER Trailer; + UINT64 SectorCount; + UINT32 BlockCount; APPLE_DISK_IMAGE_BLOCK_DATA **Blocks; diff --git a/Library/OcAppleDiskImageLib/OcAppleDiskImageBlockIo.c b/Library/OcAppleDiskImageLib/OcAppleDiskImageBlockIo.c index 5761d545..c3468cdd 100644 --- a/Library/OcAppleDiskImageLib/OcAppleDiskImageBlockIo.c +++ b/Library/OcAppleDiskImageLib/OcAppleDiskImageBlockIo.c @@ -127,7 +127,7 @@ DiskImageBlockIoReadBlocks ( DiskImageData = OC_APPLE_DISK_IMAGE_MOUNTED_DATA_FROM_THIS (This); - if (Lba >= DiskImageData->ImageContext->Trailer.SectorCount) { + if (Lba >= DiskImageData->ImageContext->SectorCount) { return EFI_INVALID_PARAMETER; } @@ -284,7 +284,7 @@ OcAppleDiskImageInstallBlockIo ( DiskImageData->BlockIoMedia.MediaPresent = TRUE; DiskImageData->BlockIoMedia.ReadOnly = TRUE; DiskImageData->BlockIoMedia.BlockSize = APPLE_DISK_IMAGE_SECTOR_SIZE; - DiskImageData->BlockIoMedia.LastBlock = (Context->Trailer.SectorCount - 1); + DiskImageData->BlockIoMedia.LastBlock = (Context->SectorCount - 1); InternalConstructDmgDevicePath (DiskImageData, RamDmgAddress); diff --git a/Library/OcAppleDiskImageLib/OcAppleDiskImageLib.c b/Library/OcAppleDiskImageLib/OcAppleDiskImageLib.c index b7b3faf4..86c9f061 100644 --- a/Library/OcAppleDiskImageLib/OcAppleDiskImageLib.c +++ b/Library/OcAppleDiskImageLib/OcAppleDiskImageLib.c @@ -207,11 +207,11 @@ OcAppleDiskImageInitializeContext ( return FALSE; } - DmgContext->Buffer = BufferBytes; - DmgContext->Length = (TrailerOffset + sizeof (DmgContext->Trailer)); - DmgContext->BlockCount = DmgBlockCount; - DmgContext->Blocks = DmgBlocks; - CopyMem (&DmgContext->Trailer, &Trailer, sizeof (DmgContext->Trailer)); + DmgContext->Buffer = BufferBytes; + DmgContext->Length = (TrailerOffset + sizeof (Trailer)); + DmgContext->BlockCount = DmgBlockCount; + DmgContext->Blocks = DmgBlocks; + DmgContext->SectorCount = Trailer.SectorCount; *Context = DmgContext; @@ -264,7 +264,7 @@ OcAppleDiskImageRead ( ASSERT (Context != NULL); ASSERT (Buffer != NULL); - ASSERT (Lba < Context->Trailer.SectorCount); + ASSERT (Lba < Context->SectorCount); LbaCurrent = Lba; RemainingBufferSize = BufferSize; diff --git a/TestsUser/DiskImage/DiskImage.c b/TestsUser/DiskImage/DiskImage.c index 2e6d66fe..750f0a22 100644 --- a/TestsUser/DiskImage/DiskImage.c +++ b/TestsUser/DiskImage/DiskImage.c @@ -70,7 +70,7 @@ int main (int argc, char *argv[]) { continue; } - UncompSize = (DmgContext->Trailer.SectorCount * APPLE_DISK_IMAGE_SECTOR_SIZE); + UncompSize = (DmgContext->SectorCount * APPLE_DISK_IMAGE_SECTOR_SIZE); UncompDmg = malloc (UncompSize); if (UncompDmg == NULL) { printf ("DMG data allocation failed.\n");