]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.c
MdePkg/BaseUefiDecompressLib: Improve performance of boundary validation
[mirror_edk2.git] / MdePkg / Library / BaseUefiDecompressLib / BaseUefiDecompressLib.c
index 9fc637e0582e163eef0c87137a19676cf7915183..3d5b7a737ad6fa88d56d418b54536a582ec6b143 100644 (file)
@@ -222,10 +222,11 @@ MakeTable (
 \r
     if (Len <= TableBits) {\r
 \r
+      if (Start[Len] >= NextCode || NextCode > MaxTableLength){\r
+        return (UINT16) BAD_TABLE;\r
+      }\r
+\r
       for (Index = Start[Len]; Index < NextCode; Index++) {\r
-        if (Index >= MaxTableLength) {\r
-          return (UINT16) BAD_TABLE;\r
-        }\r
         Table[Index] = Char;\r
       }\r
 \r
@@ -641,6 +642,12 @@ Decode (
 \r
         BytesRemain--;\r
       }\r
+      //\r
+      // Once mOutBuf is fully filled, directly return\r
+      //\r
+      if (Sd->mOutBuf >= Sd->mOrigSize) {\r
+        goto Done;\r
+      }\r
     }\r
   }\r
 \r