]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix the issues about the loop count for checksum 16,32,64. The input parameters are...
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 1 Feb 2008 14:53:33 +0000 (14:53 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Fri, 1 Feb 2008 14:53:33 +0000 (14:53 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@4649 6f19259b-4bc3-4df7-8a09-765794883524

MdePkg/Library/BaseLib/CheckSum.c

index 5f755451c4af0a36f1f952521b27834b64be02ff..8612c7c392bb574930d4f1a0456ef27fefd77731 100644 (file)
@@ -122,14 +122,15 @@ CalculateSum16 (
 {\r
   UINT16    Sum;\r
   UINTN     Count;\r
 {\r
   UINT16    Sum;\r
   UINTN     Count;\r
+  UINTN     Total;\r
 \r
   ASSERT (Buffer != NULL);\r
   ASSERT (((UINTN) Buffer & 0x1) == 0);\r
   ASSERT ((Length & 0x1) == 0);\r
   ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1));\r
 \r
 \r
   ASSERT (Buffer != NULL);\r
   ASSERT (((UINTN) Buffer & 0x1) == 0);\r
   ASSERT ((Length & 0x1) == 0);\r
   ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1));\r
 \r
-\r
-  for (Sum = 0, Count = 0; Count < Length; Count++) {\r
+  Total = Length / sizeof (*Buffer);\r
+  for (Sum = 0, Count = 0; Count < Total; Count++) {\r
     Sum = (UINT16) (Sum + *(Buffer + Count));\r
   }\r
   \r
     Sum = (UINT16) (Sum + *(Buffer + Count));\r
   }\r
   \r
@@ -203,14 +204,15 @@ CalculateSum32 (
 {\r
   UINT32    Sum;\r
   UINTN     Count;\r
 {\r
   UINT32    Sum;\r
   UINTN     Count;\r
+  UINTN     Total;\r
 \r
   ASSERT (Buffer != NULL);\r
   ASSERT (((UINTN) Buffer & 0x3) == 0);\r
   ASSERT ((Length & 0x3) == 0);\r
   ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1));\r
 \r
 \r
   ASSERT (Buffer != NULL);\r
   ASSERT (((UINTN) Buffer & 0x3) == 0);\r
   ASSERT ((Length & 0x3) == 0);\r
   ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1));\r
 \r
-\r
-  for (Sum = 0, Count = 0; Count < Length; Count++) {\r
+  Total = Length / sizeof (*Buffer);\r
+  for (Sum = 0, Count = 0; Count < Total; Count++) {\r
     Sum = Sum + *(Buffer + Count);\r
   }\r
   \r
     Sum = Sum + *(Buffer + Count);\r
   }\r
   \r
@@ -284,13 +286,15 @@ CalculateSum64 (
 {\r
   UINT64    Sum;\r
   UINTN     Count;\r
 {\r
   UINT64    Sum;\r
   UINTN     Count;\r
+  UINTN     Total;\r
 \r
   ASSERT (Buffer != NULL);\r
   ASSERT (((UINTN) Buffer & 0x7) == 0);\r
   ASSERT ((Length & 0x7) == 0);\r
   ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1));\r
 \r
 \r
   ASSERT (Buffer != NULL);\r
   ASSERT (((UINTN) Buffer & 0x7) == 0);\r
   ASSERT ((Length & 0x7) == 0);\r
   ASSERT (Length <= (MAX_ADDRESS - ((UINTN) Buffer) + 1));\r
 \r
-  for (Sum = 0, Count = 0; Count < Length; Count++) {\r
+  Total = Length / sizeof (*Buffer);\r
+  for (Sum = 0, Count = 0; Count < Total; Count++) {\r
     Sum = Sum + *(Buffer + Count);\r
   }\r
   \r
     Sum = Sum + *(Buffer + Count);\r
   }\r
   \r