]> git.proxmox.com Git - mirror_edk2.git/commitdiff
error handling enhancement for possible null pointer dereference
authorerictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 23 Sep 2011 05:17:31 +0000 (05:17 +0000)
committererictian <erictian@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 23 Sep 2011 05:17:31 +0000 (05:17 +0000)
Signed-off-by: erictian
Reviewed-by: ydong10
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12434 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Bus/Usb/UsbBusPei/UsbPeim.c
MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.c

index 4a5d8e8bc4265fc143794b051401de9ca05d9aa4..b63173d18184d677ece1163bff627d607450d5e9 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 The module to produce Usb Bus PPI.\r
 \r
-Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
   \r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions\r
@@ -307,13 +307,13 @@ PeiHubEnumeration (
         NewPeiUsbDevice->DeviceSpeed = (UINT8)IsPortLowSpeedDeviceAttached (PortStatus.PortStatus);\r
 \r
         if(NewPeiUsbDevice->DeviceSpeed != EFI_USB_SPEED_HIGH) {\r
-           if (PeiUsbDevice->DeviceSpeed == EFI_USB_SPEED_HIGH) {\r
-             NewPeiUsbDevice->Translator.TranslatorPortNumber = (UINT8)Index;\r
-             NewPeiUsbDevice->Translator.TranslatorHubAddress = *CurrentAddress;\r
-           } else {\r
-               CopyMem(&(NewPeiUsbDevice->Translator), &(PeiUsbDevice->Translator), sizeof(EFI_USB2_HC_TRANSACTION_TRANSLATOR));\r
+          if (PeiUsbDevice->DeviceSpeed == EFI_USB_SPEED_HIGH) {\r
+            NewPeiUsbDevice->Translator.TranslatorPortNumber = (UINT8)Index;\r
+            NewPeiUsbDevice->Translator.TranslatorHubAddress = *CurrentAddress;\r
+          } else {\r
+            CopyMem(&(NewPeiUsbDevice->Translator), &(PeiUsbDevice->Translator), sizeof(EFI_USB2_HC_TRANSACTION_TRANSLATOR));\r
           }\r
-       }\r
+        }\r
 \r
         //\r
         // Configure that Usb Device\r
@@ -380,18 +380,21 @@ PeiUsbEnumeration (
 \r
 \r
   CurrentAddress = 0;\r
-  if (Usb2HcPpi != NULL){\r
+  if (Usb2HcPpi != NULL) {\r
     Usb2HcPpi->GetRootHubPortNumber (\r
                 PeiServices,\r
                 Usb2HcPpi,\r
                 (UINT8 *) &NumOfRootPort\r
                 );    \r
-  } else {\r
+  } else if (UsbHcPpi != NULL) {\r
     UsbHcPpi->GetRootHubPortNumber (\r
                 PeiServices,\r
                 UsbHcPpi,\r
                 (UINT8 *) &NumOfRootPort\r
                 );\r
+  } else {\r
+    ASSERT (FALSE);\r
+    return EFI_INVALID_PARAMETER;\r
   }\r
 \r
   for (Index = 0; Index < NumOfRootPort; Index++) {\r
index 000430ae78d3353e635d27b6cd350cbb1e39af39..fe6121985c4e3a5a9bc9a6c979244228518bb617 100644 (file)
@@ -627,13 +627,18 @@ SetKeyboardLayoutEvent (
     //\r
     KeyCode = EfiKeyToUsbKeyCodeConvertionTable [(UINT8) (TempKey.Key)];\r
     TableEntry = GetKeyDescriptor (UsbKeyboardDevice, KeyCode);\r
+    if (TableEntry == NULL) {\r
+      ReleaseKeyboardLayoutResources (UsbKeyboardDevice);\r
+      FreePool (KeyboardLayout);\r
+      return;\r
+    }\r
     CopyMem (TableEntry, KeyDescriptor, sizeof (EFI_KEY_DESCRIPTOR));\r
 \r
     //\r
     // For non-spacing key, create the list with a non-spacing key followed by physical keys.\r
     //\r
     if (TempKey.Modifier == EFI_NS_KEY_MODIFIER) {\r
-      UsbNsKey = AllocatePool (sizeof (USB_NS_KEY));\r
+      UsbNsKey = AllocateZeroPool (sizeof (USB_NS_KEY));\r
       ASSERT (UsbNsKey != NULL);\r
 \r
       //\r