From 1d0cab2ec2f57a31832799473a5174a422ce2ed0 Mon Sep 17 00:00:00 2001 From: klu2 Date: Mon, 23 Feb 2009 14:05:41 +0000 Subject: [PATCH] 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 --- DuetPkg/PciRootBridgeNoEnumerationDxe/PcatPciRootBridge.c | 6 +++--- 1 file 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)) { -- 2.39.2