]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Add check when use Index as Array [Index] to avoid out of Array bound.
authorlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 24 Jan 2009 03:39:02 +0000 (03:39 +0000)
committerlgao4 <lgao4@6f19259b-4bc3-4df7-8a09-765794883524>
Sat, 24 Jan 2009 03:39:02 +0000 (03:39 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7366 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BaseUefiDecompressLib/BaseUefiDecompressLib.c

index 840ea5f2c17d98d3dd64cbeba98f28a4d61d8302..9d0fd7d131ea738d7d85922f0d40640fe83e9fa8 100644 (file)
@@ -221,7 +221,7 @@ MakeTable (
       Index   = (UINT16) (Len - TableBits);\r
 \r
       while (Index != 0) {\r
-        if (*Pointer == 0) {\r
+        if (*Pointer == 0 && Avail < (2 * NC - 1)) {\r
           Sd->mRight[Avail] = Sd->mLeft[Avail] = 0;\r
           *Pointer = Avail++;\r
         }\r
@@ -375,7 +375,7 @@ ReadPTLen (
     //\r
     if (Index == Special) {\r
       CharC = (UINT16) GetBits (Sd, 2);\r
-      while ((INT16) (--CharC) >= 0) {\r
+      while ((INT16) (--CharC) >= 0 && Index < NPT) {\r
         Sd->mPTLen[Index++] = 0;\r
       }\r
     }\r
@@ -457,7 +457,7 @@ ReadCLen (
         CharC = (UINT16) (GetBits (Sd, CBIT) + 20);\r
       }\r
 \r
-      while ((INT16) (--CharC) >= 0) {\r
+      while ((INT16) (--CharC) >= 0 && Index < NC) {\r
         Sd->mCLen[Index++] = 0;\r
       }\r
 \r