Fixed a bug when input a invalid token number (not ZERO nor a valid token number) PcdLib should ASSERT.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@802 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2006-07-06 13:34:25 +00:00
parent 3dd19b0d56
commit 2b21a9713c
4 changed files with 52 additions and 41 deletions

View File

@@ -499,12 +499,18 @@ DxePcdGetNextToken (
IN OUT UINTN *TokenNumber
)
{
UINTN ExTokenNumber;
EFI_STATUS Status;
Status = EFI_NOT_FOUND;
//
// Scan the local token space
//
if (Guid == NULL) {
if (((*TokenNumber > PEI_NEX_TOKEN_NUMBER) && (*TokenNumber < PEI_LOCAL_TOKEN_NUMBER)) ||
((*TokenNumber > (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER)))) {
return EFI_NOT_FOUND;
}
(*TokenNumber)++;
if (*TokenNumber > PEI_NEX_TOKEN_NUMBER &&
*TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) {
@@ -525,10 +531,9 @@ DxePcdGetNextToken (
}
if (!PEI_EXMAP_TABLE_EMPTY) {
ExTokenNumber = *TokenNumber;
ExTokenNumber = ExGetNextTokeNumber (
Status = ExGetNextTokeNumber (
Guid,
ExTokenNumber,
TokenNumber,
mPcdDatabase->PeiDb.Init.GuidTable,
sizeof(mPcdDatabase->PeiDb.Init.GuidTable),
mPcdDatabase->PeiDb.Init.ExMapTable,
@@ -536,13 +541,14 @@ DxePcdGetNextToken (
);
}
if ((ExTokenNumber == PCD_INVALID_TOKEN_NUMBER) &&
!DXE_EXMAP_TABLE_EMPTY
) {
ExTokenNumber = *TokenNumber;
ExTokenNumber = ExGetNextTokeNumber (
if (Status == EFI_SUCCESS) {
return Status;
}
if (!DXE_EXMAP_TABLE_EMPTY) {
Status = ExGetNextTokeNumber (
Guid,
ExTokenNumber,
TokenNumber,
mPcdDatabase->DxeDb.Init.GuidTable,
sizeof(mPcdDatabase->DxeDb.Init.GuidTable),
mPcdDatabase->DxeDb.Init.ExMapTable,
@@ -550,9 +556,7 @@ DxePcdGetNextToken (
);
}
*TokenNumber = ExTokenNumber;
return EFI_SUCCESS;
return Status;
}