diff options
author | klu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-02-23 14:05:41 +0000 |
---|---|---|
committer | klu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524> | 2009-02-23 14:05:41 +0000 |
commit | 1d0cab2ec2f57a31832799473a5174a422ce2ed0 (patch) | |
tree | c91b6fac77441d4c035b0b75c2255bd0203c06f1 /DuetPkg/PciRootBridgeNoEnumerationDxe | |
parent | dae93068cb6e85215a7cae75328c5f740db00187 (diff) | |
download | edk2-platforms-1d0cab2ec2f57a31832799473a5174a422ce2ed0.tar.xz |
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
Diffstat (limited to 'DuetPkg/PciRootBridgeNoEnumerationDxe')
-rw-r--r-- | DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridge.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridge.c b/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridge.c index 3ebfc16de5..d128024594 100644 --- a/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridge.c +++ b/DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridge.c @@ -183,7 +183,7 @@ Returns: &PrivateData->Io,
EfiPciWidthUint16,
Address,
- sizeof (VendorId),
+ sizeof (VendorId) / sizeof (UINT16),
&VendorId
);
if ((EFI_ERROR (Status)) || ((VendorId == 0xffff) && (Function == 0))) {
@@ -205,9 +205,9 @@ Returns: //
Status = PrivateData->Io.Pci.Read (
&PrivateData->Io,
- EfiPciWidthUint32,
+ EfiPciWidthUint16,
Address,
- sizeof (PciConfigurationHeader) / sizeof (UINT32),
+ sizeof (PciConfigurationHeader) / sizeof (UINT16),
&PciConfigurationHeader
);
if (EFI_ERROR (Status)) {
|