]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fixed a bug when input a invalid token number (not ZERO nor a valid token number...
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 6 Jul 2006 13:34:25 +0000 (13:34 +0000)
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 6 Jul 2006 13:34:25 +0000 (13:34 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@802 6f19259b-4bc3-4df7-8a09-765794883524

EdkModulePkg/Universal/PCD/Dxe/Pcd.c
EdkModulePkg/Universal/PCD/Dxe/Service.c
EdkModulePkg/Universal/PCD/Dxe/Service.h
EdkModulePkg/Universal/PCD/Pei/Pcd.c

index b78752df293027cd11e6f868ac58e35b47001416..115b1ac93837fc3d89abab856c55115a27fe033b 100644 (file)
@@ -499,12 +499,18 @@ DxePcdGetNextToken (
   IN OUT   UINTN            *TokenNumber\r
   )\r
 {\r
   IN OUT   UINTN            *TokenNumber\r
   )\r
 {\r
-  UINTN               ExTokenNumber;\r
-  \r
+  EFI_STATUS          Status;\r
+\r
+  Status = EFI_NOT_FOUND;\r
   //\r
   // Scan the local token space\r
   //\r
   if (Guid == NULL) {\r
   //\r
   // Scan the local token space\r
   //\r
   if (Guid == NULL) {\r
+    if (((*TokenNumber > PEI_NEX_TOKEN_NUMBER) && (*TokenNumber < PEI_LOCAL_TOKEN_NUMBER)) ||\r
+        ((*TokenNumber > (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER)))) {\r
+        return EFI_NOT_FOUND;\r
+    }\r
+    \r
     (*TokenNumber)++;\r
     if (*TokenNumber > PEI_NEX_TOKEN_NUMBER &&\r
         *TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) {\r
     (*TokenNumber)++;\r
     if (*TokenNumber > PEI_NEX_TOKEN_NUMBER &&\r
         *TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) {\r
@@ -525,10 +531,9 @@ DxePcdGetNextToken (
   }\r
 \r
   if (!PEI_EXMAP_TABLE_EMPTY) {\r
   }\r
 \r
   if (!PEI_EXMAP_TABLE_EMPTY) {\r
-    ExTokenNumber = *TokenNumber;\r
-    ExTokenNumber = ExGetNextTokeNumber (\r
+    Status = ExGetNextTokeNumber (\r
                         Guid,\r
                         Guid,\r
-                        ExTokenNumber,\r
+                        TokenNumber,\r
                         mPcdDatabase->PeiDb.Init.GuidTable,\r
                         sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
                         mPcdDatabase->PeiDb.Init.ExMapTable,\r
                         mPcdDatabase->PeiDb.Init.GuidTable,\r
                         sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
                         mPcdDatabase->PeiDb.Init.ExMapTable,\r
@@ -536,13 +541,14 @@ DxePcdGetNextToken (
                         );\r
   }\r
 \r
                         );\r
   }\r
 \r
-  if ((ExTokenNumber == PCD_INVALID_TOKEN_NUMBER) &&\r
-      !DXE_EXMAP_TABLE_EMPTY\r
-    ) {\r
-    ExTokenNumber = *TokenNumber;\r
-    ExTokenNumber = ExGetNextTokeNumber (\r
+  if (Status == EFI_SUCCESS) {\r
+    return Status;\r
+  }\r
+\r
+  if (!DXE_EXMAP_TABLE_EMPTY) {\r
+    Status = ExGetNextTokeNumber (\r
                         Guid,\r
                         Guid,\r
-                        ExTokenNumber,\r
+                        TokenNumber,\r
                         mPcdDatabase->DxeDb.Init.GuidTable,\r
                         sizeof(mPcdDatabase->DxeDb.Init.GuidTable),\r
                         mPcdDatabase->DxeDb.Init.ExMapTable,\r
                         mPcdDatabase->DxeDb.Init.GuidTable,\r
                         sizeof(mPcdDatabase->DxeDb.Init.GuidTable),\r
                         mPcdDatabase->DxeDb.Init.ExMapTable,\r
@@ -550,9 +556,7 @@ DxePcdGetNextToken (
                         );\r
   }\r
 \r
                         );\r
   }\r
 \r
-  *TokenNumber = ExTokenNumber;\r
-\r
-  return EFI_SUCCESS;\r
+  return Status;\r
 }\r
 \r
 \r
 }\r
 \r
 \r
index adbbe5fc5a5cd83cfc79728e0b944a99087e6730..613d8c84d1528aa5e20a14613b5bfc6d7b372f6e 100644 (file)
@@ -109,7 +109,7 @@ GetWorker (
       Name = &(StringTable[VariableHead->StringIndex]);\r
       VaraiableDefaultBuffer = (UINT8 *) PcdDb + VariableHead->DefaultValueOffset;\r
 \r
       Name = &(StringTable[VariableHead->StringIndex]);\r
       VaraiableDefaultBuffer = (UINT8 *) PcdDb + VariableHead->DefaultValueOffset;\r
 \r
-      Status = GetHiiVariable (Guid, Name, (VOID*)&Data, &DataSize);\r
+      Status = GetHiiVariable (Guid, Name, &Data, &DataSize);\r
       if (Status == EFI_SUCCESS) {\r
         if (GetSize == 0) {\r
           //\r
       if (Status == EFI_SUCCESS) {\r
         if (GetSize == 0) {\r
           //\r
@@ -252,14 +252,14 @@ DxeUnRegisterCallBackWorker (
 \r
 \r
 \r
 \r
 \r
 \r
-UINTN           \r
+EFI_STATUS\r
 ExGetNextTokeNumber (\r
 ExGetNextTokeNumber (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN UINTN                  TokenNumber,\r
-  IN EFI_GUID               *GuidTable,\r
-  IN UINTN                  SizeOfGuidTable,\r
-  IN DYNAMICEX_MAPPING      *ExMapTable,\r
-  IN UINTN                  SizeOfExMapTable\r
+  IN      CONST EFI_GUID         *Guid,\r
+  IN OUT  UINTN                  *TokenNumber,\r
+  IN      EFI_GUID               *GuidTable,\r
+  IN      UINTN                  SizeOfGuidTable,\r
+  IN      DYNAMICEX_MAPPING      *ExMapTable,\r
+  IN      UINTN                  SizeOfExMapTable\r
   )\r
 {\r
   EFI_GUID         *MatchGuid;\r
   )\r
 {\r
   EFI_GUID         *MatchGuid;\r
@@ -269,7 +269,7 @@ ExGetNextTokeNumber (
 \r
   MatchGuid = ScanGuid (GuidTable, SizeOfGuidTable, Guid);\r
   if (MatchGuid == NULL) {\r
 \r
   MatchGuid = ScanGuid (GuidTable, SizeOfGuidTable, Guid);\r
   if (MatchGuid == NULL) {\r
-    return PCD_INVALID_TOKEN_NUMBER;\r
+    return EFI_NOT_FOUND;\r
   }\r
 \r
   Found = FALSE;\r
   }\r
 \r
   Found = FALSE;\r
@@ -282,35 +282,39 @@ ExGetNextTokeNumber (
   }\r
 \r
   if (Found) {\r
   }\r
 \r
   if (Found) {\r
-    if (TokenNumber == PCD_INVALID_TOKEN_NUMBER) {\r
-      return ExMapTable[Idx].ExTokenNumber;\r
+    if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {\r
+      *TokenNumber = ExMapTable[Idx].ExTokenNumber;\r
+      return EFI_SUCCESS;\r
     }\r
 \r
     for ( ; Idx < SizeOfExMapTable; Idx++) {\r
     }\r
 \r
     for ( ; Idx < SizeOfExMapTable; Idx++) {\r
-      if (ExMapTable[Idx].ExTokenNumber == TokenNumber) {\r
+      if (ExMapTable[Idx].ExTokenNumber == *TokenNumber) {\r
         Idx++;\r
         if (Idx == SizeOfExMapTable) {\r
           //\r
           // Exceed the length of ExMap Table\r
           //\r
         Idx++;\r
         if (Idx == SizeOfExMapTable) {\r
           //\r
           // Exceed the length of ExMap Table\r
           //\r
-          return PCD_INVALID_TOKEN_NUMBER;\r
+          *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+          return EFI_SUCCESS;\r
         } else if (ExMapTable[Idx].ExGuidIndex == GuidTableIdx) {\r
           //\r
           // Found the next match\r
           //\r
         } else if (ExMapTable[Idx].ExGuidIndex == GuidTableIdx) {\r
           //\r
           // Found the next match\r
           //\r
-          return ExMapTable[Idx].ExTokenNumber;\r
+          *TokenNumber = ExMapTable[Idx].ExTokenNumber;\r
+          return EFI_SUCCESS;\r
         } else {\r
           //\r
           // Guid has been changed. It is the next Token Space Guid.\r
           // We should flag no more TokenNumber.\r
           //\r
         } else {\r
           //\r
           // Guid has been changed. It is the next Token Space Guid.\r
           // We should flag no more TokenNumber.\r
           //\r
-          return PCD_INVALID_TOKEN_NUMBER;\r
+          *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+          return EFI_SUCCESS;\r
         }\r
       }\r
     }\r
   }\r
   \r
         }\r
       }\r
     }\r
   }\r
   \r
-  return PCD_INVALID_TOKEN_NUMBER;\r
+  return EFI_NOT_FOUND;\r
 }\r
   \r
 \r
 }\r
   \r
 \r
@@ -375,13 +379,13 @@ EFI_STATUS
 GetHiiVariable (\r
   IN  EFI_GUID      *VariableGuid,\r
   IN  UINT16        *VariableName,\r
 GetHiiVariable (\r
   IN  EFI_GUID      *VariableGuid,\r
   IN  UINT16        *VariableName,\r
-  OUT VOID          **VariableData,\r
+  OUT UINT8         **VariableData,\r
   OUT UINTN         *VariableSize\r
   )\r
 {\r
   UINTN      Size;\r
   EFI_STATUS Status;\r
   OUT UINTN         *VariableSize\r
   )\r
 {\r
   UINTN      Size;\r
   EFI_STATUS Status;\r
-  VOID       *Buffer;\r
+  UINT8      *Buffer;\r
 \r
   Size = 0;\r
   Buffer = NULL;\r
 \r
   Size = 0;\r
   Buffer = NULL;\r
@@ -395,7 +399,7 @@ GetHiiVariable (
     );\r
   \r
   if (Status == EFI_BUFFER_TOO_SMALL) {\r
     );\r
   \r
   if (Status == EFI_BUFFER_TOO_SMALL) {\r
-    Buffer = AllocatePool (Size);\r
+    Buffer = (UINT8 *) AllocatePool (Size);\r
 \r
     ASSERT (Buffer != NULL);\r
 \r
 \r
     ASSERT (Buffer != NULL);\r
 \r
index ff90fa5479db8df763e41f3bd324997bddf96842..271d8b32c4e804c5ae31e3e745160d634aa1ca60 100644 (file)
@@ -397,7 +397,7 @@ EFI_STATUS
 GetHiiVariable (\r
   IN  EFI_GUID      *VariableGuid,\r
   IN  UINT16        *VariableName,\r
 GetHiiVariable (\r
   IN  EFI_GUID      *VariableGuid,\r
   IN  UINT16        *VariableName,\r
-  OUT VOID          **VariableData,\r
+  OUT UINT8          **VariableData,\r
   OUT UINTN         *VariableSize\r
   )\r
 ;\r
   OUT UINTN         *VariableSize\r
   )\r
 ;\r
@@ -441,14 +441,14 @@ GetExPcdTokenNumber (
 \r
 \r
 \r
 \r
 \r
 \r
-UINTN           \r
+EFI_STATUS           \r
 ExGetNextTokeNumber (\r
 ExGetNextTokeNumber (\r
-  IN CONST EFI_GUID    *Guid,\r
-  IN UINTN             TokenNumber,\r
-  IN EFI_GUID          *GuidTable,\r
-  IN UINTN             SizeOfGuidTable,\r
-  IN DYNAMICEX_MAPPING *ExMapTable,\r
-  IN UINTN             SizeOfExMapTable\r
+  IN      CONST EFI_GUID    *Guid,\r
+  IN OUT  UINTN             *TokenNumber,\r
+  IN      EFI_GUID          *GuidTable,\r
+  IN      UINTN             SizeOfGuidTable,\r
+  IN      DYNAMICEX_MAPPING *ExMapTable,\r
+  IN      UINTN             SizeOfExMapTable\r
   )\r
 ;\r
 \r
   )\r
 ;\r
 \r
index 6d90671852690becb94a2fab62c0fc6071fed955..4ae4b27ef496e36c599e714f63d95db37d5376f6 100644 (file)
@@ -480,6 +480,9 @@ PeiPcdGetNextToken (
   BOOLEAN             Found;\r
     \r
   if (Guid == NULL) {\r
   BOOLEAN             Found;\r
     \r
   if (Guid == NULL) {\r
+    if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
+      return EFI_NOT_FOUND;\r
+    }\r
     (*TokenNumber)++;\r
     if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
     (*TokenNumber)++;\r
     if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r