Adjust code to fix potential array out-bound issues.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@7502 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qhuang8 2009-02-11 07:05:43 +00:00
parent 51195fbe8c
commit 96a5ac5b0d
4 changed files with 19 additions and 6 deletions

View File

@ -888,6 +888,11 @@ DayValid (
DayOfMonth[10] = 30;
DayOfMonth[11] = 31;
//
// The validity of Time->Month field should be checked before
//
ASSERT (Time->Month >=1);
ASSERT (Time->Month <=12);
if (Time->Day < 1 ||
Time->Day > DayOfMonth[Time->Month - 1] ||
(Time->Month == 2 && (!IsLeapYear (Time) && Time->Day > 28))
@ -1048,6 +1053,12 @@ IsWithinOneDay (
Adjacent = FALSE;
//
// The validity of Time->Month field should be checked before
//
ASSERT (From->Month >=1);
ASSERT (From->Month <=12);
if (From->Year == To->Year) {
if (From->Month == To->Month) {
if ((From->Day + 1) == To->Day) {

View File

@ -49,7 +49,9 @@ VariableIndexTableUpdate (
IN VARIABLE_HEADER *Variable
)
{
IndexTable->Index[IndexTable->Length++] = (UINT16) (((UINT32)(UINTN) Variable) >> 2);
if (IndexTable->Length < VARIABLE_INDEX_TABLE_VOLUME) {
IndexTable->Index[IndexTable->Length++] = (UINT16) (((UINT32)(UINTN) Variable) >> 2);
}
return;
}

View File

@ -443,10 +443,8 @@ FindVariable (
//
// Record Variable in VariableIndex HOB
//
if (IndexTable->Length < VARIABLE_INDEX_TABLE_VOLUME) {
VariableIndexTableUpdate (IndexTable, Variable);
}
VariableIndexTableUpdate (IndexTable, Variable);
if (CompareWithValidVariable (Variable, VariableName, VendorGuid, PtrTrack) == EFI_SUCCESS) {
return EFI_SUCCESS;
}

View File

@ -48,7 +48,9 @@ VariableIndexTableUpdate (
IN VARIABLE_HEADER *Variable
)
{
IndexTable->Index[IndexTable->Length++] = (UINT16) (UINTN) Variable;
if (IndexTable->Length < VARIABLE_INDEX_TABLE_VOLUME) {
IndexTable->Index[IndexTable->Length++] = (UINT16) (UINTN) Variable;
}
return;
}