while compiling with GCC I have found two issues in PcatPciRootBridge.c:
* when vendor id is read, the code read 2 * 2 bytes into a buffer of 2 bytes.
The 'buffer overflow' crashed efi.
* when pci configuration header is read, the code read by chunks of 4 bytes,
but the buffer is aligned on 2 bytes. According to the compilation options,
the reads may fail (and the failure is ignored).
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7602
6f19259b-4bc3-4df7-8a09-
765794883524
&PrivateData->Io, \r
EfiPciWidthUint16, \r
Address, \r
&PrivateData->Io, \r
EfiPciWidthUint16, \r
Address, \r
+ sizeof (VendorId) / sizeof (UINT16), \r
&VendorId\r
);\r
if ((EFI_ERROR (Status)) || ((VendorId == 0xffff) && (Function == 0))) {\r
&VendorId\r
);\r
if ((EFI_ERROR (Status)) || ((VendorId == 0xffff) && (Function == 0))) {\r
//\r
Status = PrivateData->Io.Pci.Read (\r
&PrivateData->Io, \r
//\r
Status = PrivateData->Io.Pci.Read (\r
&PrivateData->Io, \r
- sizeof (PciConfigurationHeader) / sizeof (UINT32), \r
+ sizeof (PciConfigurationHeader) / sizeof (UINT16), \r
&PciConfigurationHeader\r
);\r
if (EFI_ERROR (Status)) {\r
&PciConfigurationHeader\r
);\r
if (EFI_ERROR (Status)) {\r