diff --git a/BaseTools/ImageTool/PeScan.c b/BaseTools/ImageTool/PeScan.c index b0dfc53d51..42aff03009 100644 --- a/BaseTools/ImageTool/PeScan.c +++ b/BaseTools/ImageTool/PeScan.c @@ -202,14 +202,15 @@ ScanPeGetSegmentInfo ( && 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_DEBUG, sizeof (Section->Name)) != 0) { - ImageSegment->Name = AllocateZeroPool (sizeof (Section->Name)); + ImageSegment->Name = AllocateCopyPool ( + sizeof (Section->Name), + Section->Name + ); if (ImageSegment->Name == NULL) { fprintf (stderr, "ImageTool: Could not allocate memory for Segment Name\n"); return RETURN_OUT_OF_RESOURCES; } - memmove (ImageSegment->Name, Section->Name, sizeof (Section->Name)); - ImageSegment->ImageAddress = Section->VirtualAddress; ImageSegment->ImageSize = ALIGN_VALUE (Section->VirtualSize, SegmentInfo->SegmentAlignment); ImageSegment->Read = (Section->Characteristics & EFI_IMAGE_SCN_MEM_READ) != 0;