mirror of https://github.com/acidanthera/audk.git
Merge tristan's patch:
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
This commit is contained in:
parent
dae93068cb
commit
1d0cab2ec2
|
@ -183,7 +183,7 @@ Returns:
|
||||||
&PrivateData->Io,
|
&PrivateData->Io,
|
||||||
EfiPciWidthUint16,
|
EfiPciWidthUint16,
|
||||||
Address,
|
Address,
|
||||||
sizeof (VendorId),
|
sizeof (VendorId) / sizeof (UINT16),
|
||||||
&VendorId
|
&VendorId
|
||||||
);
|
);
|
||||||
if ((EFI_ERROR (Status)) || ((VendorId == 0xffff) && (Function == 0))) {
|
if ((EFI_ERROR (Status)) || ((VendorId == 0xffff) && (Function == 0))) {
|
||||||
|
@ -205,9 +205,9 @@ Returns:
|
||||||
//
|
//
|
||||||
Status = PrivateData->Io.Pci.Read (
|
Status = PrivateData->Io.Pci.Read (
|
||||||
&PrivateData->Io,
|
&PrivateData->Io,
|
||||||
EfiPciWidthUint32,
|
EfiPciWidthUint16,
|
||||||
Address,
|
Address,
|
||||||
sizeof (PciConfigurationHeader) / sizeof (UINT32),
|
sizeof (PciConfigurationHeader) / sizeof (UINT16),
|
||||||
&PciConfigurationHeader
|
&PciConfigurationHeader
|
||||||
);
|
);
|
||||||
if (EFI_ERROR (Status)) {
|
if (EFI_ERROR (Status)) {
|
||||||
|
|
Loading…
Reference in New Issue