mirror of
https://github.com/acidanthera/audk.git
synced 2025-09-23 17:57:45 +02:00
ImageTool: Exclusively use OC/User allocators
This commit is contained in:
parent
5fb01f8f29
commit
e234e4ea63
@ -159,7 +159,7 @@ ConstructHii (
|
|||||||
|
|
||||||
CopyGuid (&HiiPackageListHeader.PackageListGuid, HiiGuid);
|
CopyGuid (&HiiPackageListHeader.PackageListGuid, HiiGuid);
|
||||||
|
|
||||||
HiiPackageData = calloc (1, HiiPackageListHeader.PackageLength);
|
HiiPackageData = AllocateZeroPool (HiiPackageListHeader.PackageLength);
|
||||||
if (HiiPackageData == NULL) {
|
if (HiiPackageData == NULL) {
|
||||||
return RETURN_OUT_OF_RESOURCES;
|
return RETURN_OUT_OF_RESOURCES;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ ImageToolBufferExpand (
|
|||||||
{
|
{
|
||||||
bool Overflow;
|
bool Overflow;
|
||||||
uint32_t NewAllocatedSize;
|
uint32_t NewAllocatedSize;
|
||||||
void *NewMemory;
|
uint8_t *NewMemory;
|
||||||
uint32_t Offset;
|
uint32_t Offset;
|
||||||
|
|
||||||
assert (Buffer->DataSize <= Buffer->AllocatedSize);
|
assert (Buffer->DataSize <= Buffer->AllocatedSize);
|
||||||
@ -56,12 +56,26 @@ ImageToolBufferExpand (
|
|||||||
return MAX_UINT32;
|
return MAX_UINT32;
|
||||||
}
|
}
|
||||||
|
|
||||||
NewMemory = realloc (Buffer->Memory, NewAllocatedSize);
|
NewMemory = AllocatePool (NewAllocatedSize);
|
||||||
if (NewMemory == NULL) {
|
if (NewMemory == NULL) {
|
||||||
DEBUG_RAISE ();
|
DEBUG_RAISE ();
|
||||||
return MAX_UINT32;
|
return MAX_UINT32;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Buffer->DataSize != 0) {
|
||||||
|
memmove (NewMemory, Buffer->Memory, Buffer->DataSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
memset (
|
||||||
|
NewMemory + Buffer->DataSize,
|
||||||
|
0,
|
||||||
|
NewAllocatedSize - Buffer->DataSize
|
||||||
|
);
|
||||||
|
|
||||||
|
if (Buffer->Memory != NULL) {
|
||||||
|
FreePool (Buffer->Memory);
|
||||||
|
}
|
||||||
|
|
||||||
Buffer->Memory = NewMemory;
|
Buffer->Memory = NewMemory;
|
||||||
Buffer->AllocatedSize = NewAllocatedSize;
|
Buffer->AllocatedSize = NewAllocatedSize;
|
||||||
}
|
}
|
||||||
@ -181,12 +195,11 @@ ImageToolBufferDump (
|
|||||||
|
|
||||||
DataSize = ImageToolBufferGetSize (Buffer);
|
DataSize = ImageToolBufferGetSize (Buffer);
|
||||||
|
|
||||||
Data = malloc (DataSize);
|
Data = AllocateCopyPool (DataSize, Buffer->Memory);
|
||||||
if (Data == NULL) {
|
if (Data == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
memmove (Data, Buffer->Memory, DataSize);
|
|
||||||
*Size = DataSize;
|
*Size = DataSize;
|
||||||
|
|
||||||
return Data;
|
return Data;
|
||||||
@ -197,6 +210,9 @@ ImageToolBufferFree (
|
|||||||
image_tool_dynamic_buffer *Buffer
|
image_tool_dynamic_buffer *Buffer
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
free (Buffer->Memory);
|
if (Buffer->Memory != NULL) {
|
||||||
|
FreePool (Buffer->Memory);
|
||||||
|
}
|
||||||
|
|
||||||
ImageToolBufferInit (Buffer);
|
ImageToolBufferInit (Buffer);
|
||||||
}
|
}
|
||||||
|
@ -579,7 +579,7 @@ CreateIntermediate (
|
|||||||
return RETURN_VOLUME_CORRUPTED;
|
return RETURN_VOLUME_CORRUPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Segments = calloc (1, sizeof (*Segments) * ImageInfo->SegmentInfo.NumSegments);
|
Segments = AllocateZeroPool (sizeof (*Segments) * ImageInfo->SegmentInfo.NumSegments);
|
||||||
if (Segments == NULL) {
|
if (Segments == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Segments\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Segments\n");
|
||||||
return RETURN_OUT_OF_RESOURCES;
|
return RETURN_OUT_OF_RESOURCES;
|
||||||
@ -588,7 +588,7 @@ CreateIntermediate (
|
|||||||
ImageInfo->SegmentInfo.Segments = Segments;
|
ImageInfo->SegmentInfo.Segments = Segments;
|
||||||
|
|
||||||
if (NumRelocs != 0) {
|
if (NumRelocs != 0) {
|
||||||
Relocs = calloc (1, sizeof (*Relocs) * NumRelocs);
|
Relocs = AllocateZeroPool (sizeof (*Relocs) * NumRelocs);
|
||||||
if (Relocs == NULL) {
|
if (Relocs == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Relocs\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Relocs\n");
|
||||||
return RETURN_OUT_OF_RESOURCES;
|
return RETURN_OUT_OF_RESOURCES;
|
||||||
@ -614,7 +614,7 @@ CreateIntermediate (
|
|||||||
return RETURN_VOLUME_CORRUPTED;
|
return RETURN_VOLUME_CORRUPTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Segments[SIndex].Name = calloc (1, strlen (Name) + 1);
|
Segments[SIndex].Name = AllocateZeroPool (strlen (Name) + 1);
|
||||||
if (Segments[SIndex].Name == NULL) {
|
if (Segments[SIndex].Name == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Segment #%d Name\n", Index);
|
fprintf (stderr, "ImageTool: Could not allocate memory for Segment #%d Name\n", Index);
|
||||||
return RETURN_OUT_OF_RESOURCES;
|
return RETURN_OUT_OF_RESOURCES;
|
||||||
@ -628,7 +628,7 @@ CreateIntermediate (
|
|||||||
Segments[SIndex].Write = (Shdr->sh_flags & SHF_WRITE) != 0;
|
Segments[SIndex].Write = (Shdr->sh_flags & SHF_WRITE) != 0;
|
||||||
Segments[SIndex].Execute = (Shdr->sh_flags & SHF_EXECINSTR) != 0;
|
Segments[SIndex].Execute = (Shdr->sh_flags & SHF_EXECINSTR) != 0;
|
||||||
|
|
||||||
Segments[SIndex].Data = calloc (1, Segments[SIndex].ImageSize);
|
Segments[SIndex].Data = AllocateZeroPool (Segments[SIndex].ImageSize);
|
||||||
if (Segments[SIndex].Data == NULL) {
|
if (Segments[SIndex].Data == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Segment #%d Data\n", Index);
|
fprintf (stderr, "ImageTool: Could not allocate memory for Segment #%d Data\n", Index);
|
||||||
return RETURN_OUT_OF_RESOURCES;
|
return RETURN_OUT_OF_RESOURCES;
|
||||||
@ -704,11 +704,11 @@ ScanElf (
|
|||||||
return RETURN_INCOMPATIBLE_VERSION;
|
return RETURN_INCOMPATIBLE_VERSION;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageInfo->DebugInfo.SymbolsPath = malloc (ImageInfo->DebugInfo.SymbolsPathLen + 1);
|
ImageInfo->DebugInfo.SymbolsPath = AllocatePool (ImageInfo->DebugInfo.SymbolsPathLen + 1);
|
||||||
if (ImageInfo->DebugInfo.SymbolsPath == NULL) {
|
if (ImageInfo->DebugInfo.SymbolsPath == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Debug Data\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Debug Data\n");
|
||||||
return RETURN_OUT_OF_RESOURCES;
|
return RETURN_OUT_OF_RESOURCES;
|
||||||
};
|
}
|
||||||
|
|
||||||
if (SymbolsPath != NULL) {
|
if (SymbolsPath != NULL) {
|
||||||
memmove (ImageInfo->DebugInfo.SymbolsPath, SymbolsPath, ImageInfo->DebugInfo.SymbolsPathLen + 1);
|
memmove (ImageInfo->DebugInfo.SymbolsPath, SymbolsPath, ImageInfo->DebugInfo.SymbolsPathLen + 1);
|
||||||
|
@ -358,16 +358,31 @@ ToolImageDestruct (
|
|||||||
|
|
||||||
if (Image->SegmentInfo.Segments != NULL) {
|
if (Image->SegmentInfo.Segments != NULL) {
|
||||||
for (Index = 0; Index < Image->SegmentInfo.NumSegments; ++Index) {
|
for (Index = 0; Index < Image->SegmentInfo.NumSegments; ++Index) {
|
||||||
free (Image->SegmentInfo.Segments[Index].Name);
|
if (Image->SegmentInfo.Segments[Index].Name != NULL) {
|
||||||
free (Image->SegmentInfo.Segments[Index].Data);
|
FreePool (Image->SegmentInfo.Segments[Index].Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Image->SegmentInfo.Segments[Index].Data != NULL) {
|
||||||
|
FreePool (Image->SegmentInfo.Segments[Index].Data);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free (Image->SegmentInfo.Segments);
|
if (Image->SegmentInfo.Segments != NULL) {
|
||||||
|
FreePool (Image->SegmentInfo.Segments);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
free (Image->HiiInfo.Data);
|
if (Image->HiiInfo.Data != NULL) {
|
||||||
free (Image->RelocInfo.Relocs);
|
FreePool (Image->HiiInfo.Data);
|
||||||
free (Image->DebugInfo.SymbolsPath);
|
}
|
||||||
|
|
||||||
|
if (Image->RelocInfo.Relocs != NULL) {
|
||||||
|
FreePool (Image->RelocInfo.Relocs);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Image->DebugInfo.SymbolsPath != NULL) {
|
||||||
|
FreePool (Image->DebugInfo.SymbolsPath);
|
||||||
|
}
|
||||||
|
|
||||||
memset (Image, 0, sizeof (*Image));
|
memset (Image, 0, sizeof (*Image));
|
||||||
}
|
}
|
||||||
@ -688,7 +703,11 @@ ToolImageStripRelocs (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
Image->RelocInfo.NumRelocs = 0;
|
Image->RelocInfo.NumRelocs = 0;
|
||||||
free (Image->RelocInfo.Relocs);
|
|
||||||
|
if (Image->RelocInfo.Relocs != NULL) {
|
||||||
|
FreePool (Image->RelocInfo.Relocs);
|
||||||
|
}
|
||||||
|
|
||||||
Image->RelocInfo.Relocs = NULL;
|
Image->RelocInfo.Relocs = NULL;
|
||||||
|
|
||||||
Image->RelocInfo.RelocsStripped = TRUE;
|
Image->RelocInfo.RelocsStripped = TRUE;
|
||||||
|
@ -51,7 +51,7 @@ HiiSrc (
|
|||||||
|
|
||||||
FilePtr = fopen (HiiName, "w");
|
FilePtr = fopen (HiiName, "w");
|
||||||
if (FilePtr == NULL) {
|
if (FilePtr == NULL) {
|
||||||
free (Hii);
|
FreePool (Hii);
|
||||||
return RETURN_NO_MEDIA;
|
return RETURN_NO_MEDIA;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ HiiSrc (
|
|||||||
" (CONST MODULE_HII_PACKAGE_LIST *)&mModuleHiiPackageList;\n"
|
" (CONST MODULE_HII_PACKAGE_LIST *)&mModuleHiiPackageList;\n"
|
||||||
);
|
);
|
||||||
|
|
||||||
free (Hii);
|
FreePool (Hii);
|
||||||
|
|
||||||
return RETURN_SUCCESS;
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -417,7 +417,7 @@ GenExecutable (
|
|||||||
|
|
||||||
UserWriteFile (OutputFileName, OutputFile, OutputFileSize);
|
UserWriteFile (OutputFileName, OutputFile, OutputFileSize);
|
||||||
|
|
||||||
free (OutputFile);
|
FreePool (OutputFile);
|
||||||
|
|
||||||
return RETURN_SUCCESS;
|
return RETURN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -595,14 +595,12 @@ ToolImageEmitPeFile (
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
PeHdr = malloc (SizeOfPeHeaders);
|
PeHdr = AllocateZeroPool (SizeOfPeHeaders);
|
||||||
if (PeHdr == NULL) {
|
if (PeHdr == NULL) {
|
||||||
DEBUG_RAISE ();
|
DEBUG_RAISE ();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
memset (PeHdr, 0, SizeOfPeHeaders);
|
|
||||||
|
|
||||||
SectionHeaders = (EFI_IMAGE_SECTION_HEADER *)((UINT8 *)PeHdr + SectionHeadersOffset);
|
SectionHeaders = (EFI_IMAGE_SECTION_HEADER *)((UINT8 *)PeHdr + SectionHeadersOffset);
|
||||||
|
|
||||||
PeHdr->CommonHeader.Signature = EFI_IMAGE_NT_SIGNATURE;
|
PeHdr->CommonHeader.Signature = EFI_IMAGE_NT_SIGNATURE;
|
||||||
@ -629,14 +627,14 @@ ToolImageEmitPeFile (
|
|||||||
|
|
||||||
Success = ToolImageEmitPeSections (Buffer, PeHdr, SectionHeaders, Image, Xip);
|
Success = ToolImageEmitPeSections (Buffer, PeHdr, SectionHeaders, Image, Xip);
|
||||||
if (!Success) {
|
if (!Success) {
|
||||||
free (PeHdr);
|
FreePool (PeHdr);
|
||||||
DEBUG_RAISE ();
|
DEBUG_RAISE ();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BufferPeHdr = ImageToolBufferGetPointer (Buffer, PeOffset);
|
BufferPeHdr = ImageToolBufferGetPointer (Buffer, PeOffset);
|
||||||
memmove (BufferPeHdr, PeHdr, SizeOfPeHeaders);
|
memmove (BufferPeHdr, PeHdr, SizeOfPeHeaders);
|
||||||
free (PeHdr);
|
FreePool (PeHdr);
|
||||||
BufferPeHdr = NULL;
|
BufferPeHdr = NULL;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -29,6 +29,7 @@ ScanPeGetRelocInfo (
|
|||||||
const char *ImageBuffer;
|
const char *ImageBuffer;
|
||||||
UINT16 RelocType;
|
UINT16 RelocType;
|
||||||
UINT16 RelocOffset;
|
UINT16 RelocOffset;
|
||||||
|
uint32_t ToolRelocsSize;
|
||||||
|
|
||||||
// FIXME: PE/COFF context access
|
// FIXME: PE/COFF context access
|
||||||
RelocBlockRva = Context->RelocDirRva;
|
RelocBlockRva = Context->RelocDirRva;
|
||||||
@ -40,7 +41,22 @@ ScanPeGetRelocInfo (
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
RelocInfo->Relocs = calloc (RelocDirSize / sizeof (UINT16), sizeof (*RelocInfo->Relocs));
|
STATIC_ASSERT (
|
||||||
|
sizeof (*RelocInfo->Relocs) % sizeof (UINT16) == 0,
|
||||||
|
"The division below is inaccurate."
|
||||||
|
);
|
||||||
|
|
||||||
|
Overflow = BaseOverflowMulU32 (
|
||||||
|
RelocDirSize,
|
||||||
|
sizeof (*RelocInfo->Relocs) / sizeof (UINT16),
|
||||||
|
&ToolRelocsSize
|
||||||
|
);
|
||||||
|
if (Overflow) {
|
||||||
|
DEBUG_RAISE ();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
RelocInfo->Relocs = AllocateZeroPool (ToolRelocsSize);
|
||||||
if (RelocInfo->Relocs == NULL) {
|
if (RelocInfo->Relocs == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Relocs[]\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Relocs[]\n");
|
||||||
return false;
|
return false;
|
||||||
@ -157,7 +173,14 @@ ScanPeGetSegmentInfo (
|
|||||||
|
|
||||||
NumSections = PeCoffGetSectionTable (Context, &Section);
|
NumSections = PeCoffGetSectionTable (Context, &Section);
|
||||||
|
|
||||||
SegmentInfo->Segments = calloc (NumSections, sizeof (*SegmentInfo->Segments));
|
STATIC_ASSERT (
|
||||||
|
sizeof (*SegmentInfo->Segments) <= sizeof (*Section),
|
||||||
|
"The multiplication below may overflow."
|
||||||
|
);
|
||||||
|
|
||||||
|
SegmentInfo->Segments = AllocateZeroPool (
|
||||||
|
NumSections * sizeof (*SegmentInfo->Segments)
|
||||||
|
);
|
||||||
if (SegmentInfo->Segments == NULL) {
|
if (SegmentInfo->Segments == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Segments[]\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Segments[]\n");
|
||||||
return false;
|
return false;
|
||||||
@ -178,7 +201,7 @@ ScanPeGetSegmentInfo (
|
|||||||
&& memcmp (Section->Name, PE_COFF_SECT_NAME_RELOC, sizeof (Section->Name)) != 0
|
&& memcmp (Section->Name, PE_COFF_SECT_NAME_RELOC, sizeof (Section->Name)) != 0
|
||||||
&& memcmp (Section->Name, PE_COFF_SECT_NAME_RESRC, sizeof (Section->Name)) != 0
|
&& memcmp (Section->Name, PE_COFF_SECT_NAME_RESRC, sizeof (Section->Name)) != 0
|
||||||
&& memcmp (Section->Name, PE_COFF_SECT_NAME_DEBUG, sizeof (Section->Name)) != 0) {
|
&& memcmp (Section->Name, PE_COFF_SECT_NAME_DEBUG, sizeof (Section->Name)) != 0) {
|
||||||
ImageSegment->Name = calloc (1, sizeof (Section->Name));
|
ImageSegment->Name = AllocateZeroPool (sizeof (Section->Name));
|
||||||
if (ImageSegment->Name == NULL) {
|
if (ImageSegment->Name == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Segment Name\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Segment Name\n");
|
||||||
return false;
|
return false;
|
||||||
@ -192,19 +215,16 @@ ScanPeGetSegmentInfo (
|
|||||||
ImageSegment->Write = (Section->Characteristics & EFI_IMAGE_SCN_MEM_WRITE) != 0;
|
ImageSegment->Write = (Section->Characteristics & EFI_IMAGE_SCN_MEM_WRITE) != 0;
|
||||||
ImageSegment->Execute = (Section->Characteristics & EFI_IMAGE_SCN_MEM_EXECUTE) != 0;
|
ImageSegment->Execute = (Section->Characteristics & EFI_IMAGE_SCN_MEM_EXECUTE) != 0;
|
||||||
|
|
||||||
ImageSegment->Data = malloc (ImageSegment->ImageSize);
|
ImageSegment->Data = AllocateCopyPool (
|
||||||
|
ImageSegment->ImageSize,
|
||||||
|
ImageBuffer + Section->VirtualAddress
|
||||||
|
);
|
||||||
if (ImageSegment->Data == NULL) {
|
if (ImageSegment->Data == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for Segment Data\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for Segment Data\n");
|
||||||
free (ImageSegment->Name);
|
FreePool (ImageSegment->Name);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
memmove (
|
|
||||||
ImageSegment->Data,
|
|
||||||
ImageBuffer + Section->VirtualAddress,
|
|
||||||
ImageSegment->ImageSize
|
|
||||||
);
|
|
||||||
|
|
||||||
++SegmentInfo->NumSegments;
|
++SegmentInfo->NumSegments;
|
||||||
++ImageSegment;
|
++ImageSegment;
|
||||||
}
|
}
|
||||||
|
@ -115,13 +115,12 @@ ScanUefiImageGetDebugInfo (
|
|||||||
|
|
||||||
assert (SymbolsPathSize >= 1);
|
assert (SymbolsPathSize >= 1);
|
||||||
|
|
||||||
DebugInfo->SymbolsPath = malloc (SymbolsPathSize + 1);
|
DebugInfo->SymbolsPath = AllocateCopyPool (SymbolsPathSize, SymbolsPath);
|
||||||
if (DebugInfo->SymbolsPath == NULL) {
|
if (DebugInfo->SymbolsPath == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for SymbolsPath\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for SymbolsPath\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
memmove (DebugInfo->SymbolsPath, SymbolsPath, SymbolsPathSize);
|
|
||||||
assert (DebugInfo->SymbolsPath[SymbolsPathSize - 1] == '\0');
|
assert (DebugInfo->SymbolsPath[SymbolsPathSize - 1] == '\0');
|
||||||
|
|
||||||
DebugInfo->SymbolsPathLen = SymbolsPathSize - 1;
|
DebugInfo->SymbolsPathLen = SymbolsPathSize - 1;
|
||||||
@ -149,15 +148,14 @@ ScanUefiImageGetHiiInfo (
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
HiiInfo->Data = malloc (HiiSize);
|
ImageBuffer = (char *)UefiImageLoaderGetImageAddress (Context);
|
||||||
|
|
||||||
|
HiiInfo->Data = AllocateCopyPool (HiiSize, ImageBuffer + HiiRva);
|
||||||
if (HiiInfo->Data == NULL) {
|
if (HiiInfo->Data == NULL) {
|
||||||
fprintf (stderr, "ImageTool: Could not allocate memory for HiiInfo Data\n");
|
fprintf (stderr, "ImageTool: Could not allocate memory for HiiInfo Data\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageBuffer = (char *)UefiImageLoaderGetImageAddress (Context);
|
|
||||||
|
|
||||||
memmove (HiiInfo->Data, ImageBuffer + HiiRva, HiiSize);
|
|
||||||
HiiInfo->DataSize = HiiSize;
|
HiiInfo->DataSize = HiiSize;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user