]> git.proxmox.com Git - mirror_edk2.git/blobdiff - DuetPkg/EfiLdr/TianoDecompress.c
SecurityPkg: Add TPM PTP support in TPM2 device lib.
[mirror_edk2.git] / DuetPkg / EfiLdr / TianoDecompress.c
index f2f37bd44849281fee88f2478a461b37288fd2c9..6fed7a15917057edcfd8f0aaae7d54c2057ae96f 100644 (file)
@@ -1,7 +1,7 @@
 /*++\r
 \r
-Copyright (c) 2004 - 2006, Intel Corporation                                                         \r
-All rights reserved. This program and the accompanying materials                          \r
+Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
 http://opensource.org/licenses/bsd-license.php                                            \r
@@ -189,15 +189,19 @@ Returns:
   UINT16  Start[18];\r
   UINT16  *Pointer;\r
   UINT16  Index3;\r
-  UINT16  Index;\r
+  volatile UINT16  Index;\r
   UINT16  Len;\r
   UINT16  Char;\r
   UINT16  JuBits;\r
   UINT16  Avail;\r
   UINT16  NextCode;\r
   UINT16  Mask;\r
+  UINT16  WordOfStart;\r
+  UINT16  WordOfCount;\r
 \r
-  SetMem (&Count[1], sizeof(UINT16) * 16, 0);\r
+  for (Index = 1; Index <= 16; Index++) {\r
+    Count[Index] = 0;\r
+  }  \r
 \r
   for (Index = 0; Index < NumOfChar; Index++) {\r
     Count[BitLen[Index]]++;\r
@@ -206,7 +210,9 @@ Returns:
   Start[1] = 0;\r
 \r
   for (Index = 1; Index <= 16; Index++) {\r
-    Start[Index + 1] = (UINT16) (Start[Index] + (Count[Index] << (16 - Index)));\r
+    WordOfStart = Start[Index];\r
+    WordOfCount = Count[Index];\r
+    Start[Index + 1] = (UINT16) (WordOfStart + (WordOfCount << (16 - Index)));\r
   }\r
 \r
   if (Start[17] != 0) {\r
@@ -222,14 +228,17 @@ Returns:
   }\r
 \r
   while (Index <= 16) {\r
-    Weight[Index++] = (UINT16) (1U << (16 - Index));\r
+    Weight[Index] = (UINT16) (1U << (16 - Index));\r
+    Index++;\r
   }\r
 \r
   Index = (UINT16) (Start[TableBits + 1] >> JuBits);\r
 \r
   if (Index != 0) {\r
     Index3 = (UINT16) (1U << TableBits);\r
-    SetMem(&Table[Index], sizeof(UINT16) * (Index3 - Index + 1), 0);\r
+    while (Index != Index3) {\r
+      Table[Index++] = 0;\r
+    }\r
   }\r
 \r
   Avail = NumOfChar;\r
@@ -366,7 +375,7 @@ Returns:
 {\r
   UINT16  Number;\r
   UINT16  CharC;\r
-  UINT16  Index;\r
+  volatile UINT16  Index;\r
   UINT32  Mask;\r
 \r
   Number = (UINT16) GetBits (Sd, nbit);\r
@@ -378,7 +387,9 @@ Returns:
       Sd->mPTTable[Index] = CharC;\r
     }\r
 \r
-    SetMem ((VOID*) &Sd->mPTLen, nn * sizeof(UINT8), 0);\r
+    for (Index = 0; Index < nn; Index++) {\r
+      Sd->mPTLen[Index] = 0;\r
+    }\r
 \r
     return 0;\r
   }\r
@@ -409,7 +420,10 @@ Returns:
     }\r
   }\r
 \r
-  SetMem ((VOID*) &Sd->mPTLen[Index], (nn - Index) * sizeof(UINT8), 0);\r
+  while (Index < nn) {\r
+    Sd->mPTLen[Index++] = 0;\r
+  }\r
+\r
   return MakeTable (Sd, nn, Sd->mPTLen, 8, Sd->mPTTable);\r
 }\r
 \r
@@ -433,7 +447,7 @@ Returns: (VOID)
 {\r
   UINT16  Number;\r
   UINT16  CharC;\r
-  UINT16  Index;\r
+  volatile UINT16  Index;\r
   UINT32  Mask;\r
 \r
   Number = (UINT16) GetBits (Sd, CBIT);\r
@@ -441,7 +455,9 @@ Returns: (VOID)
   if (Number == 0) {\r
     CharC = (UINT16) GetBits (Sd, CBIT);\r
 \r
-    SetMem ((VOID*)&Sd->mCLen, sizeof(UINT8) * NC, 0);\r
+    for (Index = 0; Index < NC; Index++) {\r
+      Sd->mCLen[Index] = 0;\r
+    }\r
 \r
     for (Index = 0; Index < 4096; Index++) {\r
       Sd->mCTable[Index] = CharC;\r
@@ -495,7 +511,9 @@ Returns: (VOID)
     }\r
   }\r
 \r
-  SetMem ((VOID*) &Sd->mCLen[Index], sizeof(UINT8) * (NC - Index), 0);\r
+  while (Index < NC) {\r
+    Sd->mCLen[Index++] = 0;\r
+  }\r
 \r
   MakeTable (Sd, NC, Sd->mCLen, 12, Sd->mCTable);\r
 \r
@@ -596,7 +614,7 @@ Returns: (VOID)
   for (;;) {\r
     CharC = DecodeC (Sd);\r
     if (Sd->mBadTableFlag != 0) {\r
-      return ;\r
+      goto Done ;\r
     }\r
 \r
     if (CharC < 256) {\r
@@ -604,7 +622,7 @@ Returns: (VOID)
       // Process an Original character\r
       //\r
       if (Sd->mOutBuf >= Sd->mOrigSize) {\r
-        return ;\r
+        goto Done ;\r
       } else {\r
         Sd->mDstBase[Sd->mOutBuf++] = (UINT8) CharC;\r
       }\r
@@ -623,7 +641,7 @@ Returns: (VOID)
       while ((INT16) (BytesRemain) >= 0) {\r
         Sd->mDstBase[Sd->mOutBuf++] = Sd->mDstBase[DataIdx++];\r
         if (Sd->mOutBuf >= Sd->mOrigSize) {\r
-          return ;\r
+          goto Done ;\r
         }\r
 \r
         BytesRemain--;\r
@@ -631,6 +649,8 @@ Returns: (VOID)
     }\r
   }\r
 \r
+Done:\r
+  return ;\r
 }\r
 \r
 EFI_STATUS\r
@@ -714,7 +734,8 @@ Returns:
   SCRATCH_DATA  *Sd;\r
   UINT8         *Src;\r
   UINT8         *Dst;\r
-\r
+  volatile UINT32  Index;\r
+  \r
   Status  = EFI_SUCCESS;\r
   Src     = Source;\r
   Dst     = Destination;\r
@@ -749,8 +770,10 @@ Returns:
 \r
   Src = Src + 8;\r
 \r
-  SetMem ((VOID*) Sd, sizeof(SCRATCH_DATA), 0);\r
-\r
+  for (Index = 0; Index < sizeof (SCRATCH_DATA); Index++) {\r
+    ((UINT8 *) Sd)[Index] = 0;\r
+  }\r
+  \r
   //\r
   // The length of the field 'Position Set Code Length Array Size' in Block Header.\r
   // For EFI 1.1 de/compression algorithm(Version 1), mPBit = 4\r