1) Remove buffer overflow when the number of Driver Binding Protocols increases in...
[people/mcb30/edk2.git] / edk2 / MdeModulePkg / Core / Dxe / Image / Image.c
index daf5fd1..e227f3a 100644 (file)
@@ -74,6 +74,7 @@ LOADED_IMAGE_PRIVATE_DATA mCorePrivateImage  = {
   0,                          // Machine\r
   NULL,                       // Ebc\r
   NULL,                       // RuntimeData\r
+  NULL,                       // DeviceHandleDevicePath\r
 };\r
 \r
 \r
@@ -644,6 +645,7 @@ Returns:
   if (!EFI_ERROR (Status)) {\r
     FilePathSize = CoreDevicePathSize (HandleFilePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL);\r
     FilePath = (EFI_DEVICE_PATH_PROTOCOL *) ( ((UINT8 *)FilePath) + FilePathSize );\r
+    Image->DeviceHandleDevicePath = CoreDuplicateDevicePath (HandleFilePath);\r
   }\r
 \r
   //\r
@@ -656,6 +658,7 @@ Returns:
   Image->Info.FilePath     = CoreDuplicateDevicePath (FilePath);\r
   Image->Info.ParentHandle = ParentImageHandle;\r
 \r
+\r
   if (NumberOfPages != NULL) {\r
     Image->NumberOfPages = *NumberOfPages ;\r
   } else {\r
@@ -1170,6 +1173,10 @@ Returns:
     CoreFreePool (Image->Info.FilePath);\r
   }\r
 \r
+  if (Image->DeviceHandleDevicePath != NULL) {\r
+    CoreFreePool (Image->DeviceHandleDevicePath);\r
+  }\r
+\r
   if (Image->FixupData != NULL) {\r
     CoreFreePool (Image->FixupData);\r
   }\r