]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/BaseBmpSupportLib/BmpSupportLib.c
MdeModulePkg/BmpSupportLib: Check PixelHeight/PixelWidth against 0
[mirror_edk2.git] / MdeModulePkg / Library / BaseBmpSupportLib / BmpSupportLib.c
index 2c95e91ecc6d734d5d00850226e2d45db7dd6d60..6196262d143b40f8e56eff191dd1d4c6edde1574 100644 (file)
@@ -148,6 +148,11 @@ TranslateBmpToGopBlt (
     return RETURN_UNSUPPORTED;\r
   }\r
 \r
+  if ((BmpHeader->PixelHeight == 0) || (BmpHeader->PixelWidth == 0)) {\r
+    DEBUG ((DEBUG_ERROR, "TranslateBmpToGopBlt: BmpHeader->PixelHeight or BmpHeader->PixelWidth is 0.\n"));\r
+    return RETURN_UNSUPPORTED;\r
+  }\r
+\r
   //\r
   // Only support BITMAPINFOHEADER format.\r
   // BITMAPFILEHEADER + BITMAPINFOHEADER = BMP_IMAGE_HEADER\r
@@ -288,7 +293,7 @@ TranslateBmpToGopBlt (
     DEBUG ((\r
       DEBUG_ERROR,\r
       "TranslateBmpToGopBlt: invalid BltBuffer needed size... PixelWidth:0x%x PixelHeight:0x%x\n",\r
-      BltBufferSize\r
+      BmpHeader->PixelWidth, BmpHeader->PixelHeight\r
       ));\r
 \r
     return RETURN_UNSUPPORTED;\r
@@ -304,7 +309,7 @@ TranslateBmpToGopBlt (
   if (EFI_ERROR (Status)) {\r
     DEBUG ((\r
       DEBUG_ERROR,\r
-      "TranslateBmpToGopBlt: invalid BltBuffer needed size... BltBufferSize:0x%lx struct size:0x%x\n",\r
+      "TranslateBmpToGopBlt: invalid BltBuffer needed size... PixelWidth x PixelHeight:0x%x struct size:0x%x\n",\r
       Temp, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL)\r
       ));\r
 \r
@@ -426,7 +431,7 @@ TranslateBmpToGopBlt (
 \r
     }\r
 \r
-    ImageIndex = (UINTN)(Image - ImageHeader);\r
+    ImageIndex = (UINTN)Image - (UINTN)ImageHeader;\r
     if ((ImageIndex % 4) != 0) {\r
       //\r
       // Bmp Image starts each row on a 32-bit boundary!\r
@@ -484,6 +489,10 @@ TranslateGopBltToBmp (
     return RETURN_INVALID_PARAMETER;\r
   }\r
 \r
+  if ((PixelHeight == 0) || (PixelWidth == 0)) {\r
+    return RETURN_UNSUPPORTED;\r
+  }\r
+\r
   //\r
   // Allocate memory for BMP file.\r
   //\r