]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/Disk/Partition/Dxe/Mbr.c
Fix a critical bug: When reading block succeeds but detecting MBR fails, it should...
[mirror_edk2.git] / EdkModulePkg / Universal / Disk / Partition / Dxe / Mbr.c
index f1b1de0d64caa8398e2b0d657b9db67870a35031..d71698c82673dcb08641b05b5482c4c4eca4f755 100644 (file)
@@ -162,10 +162,13 @@ Returns:
                       BlockIo->Media->BlockSize,\r
                       Mbr\r
                       );\r
-  if (EFI_ERROR (Status) || !PartitionValidMbr (Mbr, BlockIo->Media->LastBlock)) {\r
+  if (EFI_ERROR (Status)) {\r
     Found = Status;\r
     goto Done;\r
   }\r
+  if (!PartitionValidMbr (Mbr, BlockIo->Media->LastBlock)) {\r
+    goto Done;\r
+  }\r
   //\r
   // We have a valid mbr - add each partition\r
   //\r
@@ -184,7 +187,7 @@ Returns:
     if (DevicePathType (LastDevicePathNode) == MEDIA_DEVICE_PATH &&\r
         DevicePathSubType (LastDevicePathNode) == MEDIA_HARDDRIVE_DP\r
         ) {\r
-      gBS->CopyMem (&ParentHdDev, LastDevicePathNode, sizeof (ParentHdDev));\r
+      CopyMem (&ParentHdDev, LastDevicePathNode, sizeof (ParentHdDev));\r
     } else {\r
       LastDevicePathNode = NULL;\r
     }\r
@@ -319,7 +322,7 @@ Returns:
   }\r
 \r
 Done:\r
-  gBS->FreePool (Mbr);\r
+  FreePool (Mbr);\r
 \r
   return Found;\r
 }\r