\r
if (Guid == NULL) {\r
(*TokenNumber)++;\r
-\r
- if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER) {\r
+ if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
}\r
- \r
+ return EFI_SUCCESS;\r
} else {\r
-\r
if (PEI_EXMAP_TABLE_EMPTY) {\r
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
- return EFI_NOT_FOUND;\r
+ return EFI_SUCCESS;\r
}\r
\r
//\r
MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);\r
\r
if (MatchGuid == NULL) {\r
- *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
return EFI_NOT_FOUND;\r
}\r
\r
ExMapTable = PeiPcdDb->Init.ExMapTable;\r
\r
Found = FALSE;\r
+ //\r
+ // Locate the GUID in ExMapTable first.\r
+ //\r
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
Found = TRUE;\r
*TokenNumber = ExMapTable[i].ExTokenNumber;\r
return EFI_SUCCESS;\r
}\r
- \r
- for ( ; ExMapTable[i].ExGuidIndex == GuidTableIdx; i++) {\r
+\r
+ for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
if (ExMapTable[i].ExTokenNumber == *TokenNumber) {\r
i++;\r
+ if (i == PEI_EXMAPPING_TABLE_SIZE) {\r
+ //\r
+ // Exceed the length of ExMap Table\r
+ //\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+ return EFI_SUCCESS;\r
+ }\r
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
*TokenNumber = ExMapTable[i].ExTokenNumber;\r
return EFI_SUCCESS;\r
} else {\r
- *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
return EFI_SUCCESS;\r
}\r
}\r
}\r
-\r
return EFI_NOT_FOUND;\r
}\r
- \r
}\r
\r
- return EFI_SUCCESS;\r
+ return EFI_NOT_FOUND;\r
}\r
\r
\r