mirror of https://github.com/acidanthera/audk.git
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:
parent
51195fbe8c
commit
96a5ac5b0d
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue