mirror of https://github.com/acidanthera/audk.git
ArmPlatformPkg/PL031RealTimeClockLib: Fixed the conditions in LibSetTime()
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14794 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
4f8c9ae05d
commit
cc104d19a9
|
@ -181,7 +181,7 @@ EfiTimeToEpoch (
|
||||||
|
|
||||||
JulianDate = Time->Day + ((153*m + 2)/5) + (365*y) + (y/4) - (y/100) + (y/400) - 32045;
|
JulianDate = Time->Day + ((153*m + 2)/5) + (365*y) + (y/4) - (y/100) + (y/400) - 32045;
|
||||||
|
|
||||||
ASSERT(JulianDate > EPOCH_JULIAN_DATE);
|
ASSERT (JulianDate >= EPOCH_JULIAN_DATE);
|
||||||
EpochDays = JulianDate - EPOCH_JULIAN_DATE;
|
EpochDays = JulianDate - EPOCH_JULIAN_DATE;
|
||||||
|
|
||||||
EpochSeconds = (EpochDays * SEC_PER_DAY) + ((UINTN)Time->Hour * SEC_PER_HOUR) + (Time->Minute * SEC_PER_MIN) + Time->Second;
|
EpochSeconds = (EpochDays * SEC_PER_DAY) + ((UINTN)Time->Hour * SEC_PER_HOUR) + (Time->Minute * SEC_PER_MIN) + Time->Second;
|
||||||
|
@ -420,16 +420,9 @@ LibSetTime (
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN EpochSeconds;
|
UINTN EpochSeconds;
|
||||||
|
|
||||||
// Because the PL031 is a 32-bit counter counting seconds,
|
// Check the input parameters are within the range specified by UEFI
|
||||||
// the maximum time span is just over 136 years.
|
if ((Time->Year < 1900) ||
|
||||||
// Time is stored in Unix Epoch format, so it starts in 1970,
|
(Time->Year > 9999) ||
|
||||||
// Therefore it can not exceed the year 2106.
|
|
||||||
// This is not a problem for UEFI, as the current spec limits the years
|
|
||||||
// to the range 1998 .. 2011
|
|
||||||
|
|
||||||
// Check the input parameters' range.
|
|
||||||
if ((Time->Year < 1998) ||
|
|
||||||
(Time->Year > 2099) ||
|
|
||||||
(Time->Month < 1 ) ||
|
(Time->Month < 1 ) ||
|
||||||
(Time->Month > 12 ) ||
|
(Time->Month > 12 ) ||
|
||||||
(!DayValid (Time) ) ||
|
(!DayValid (Time) ) ||
|
||||||
|
@ -444,6 +437,15 @@ LibSetTime (
|
||||||
goto EXIT;
|
goto EXIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Because the PL031 is a 32-bit counter counting seconds,
|
||||||
|
// the maximum time span is just over 136 years.
|
||||||
|
// Time is stored in Unix Epoch format, so it starts in 1970,
|
||||||
|
// Therefore it can not exceed the year 2106.
|
||||||
|
if ((Time->Year < 1970) || (Time->Year >= 2106)) {
|
||||||
|
Status = EFI_UNSUPPORTED;
|
||||||
|
goto EXIT;
|
||||||
|
}
|
||||||
|
|
||||||
// Initialize the hardware if not already done
|
// Initialize the hardware if not already done
|
||||||
if (!mPL031Initialized) {
|
if (!mPL031Initialized) {
|
||||||
Status = InitializePL031 ();
|
Status = InitializePL031 ();
|
||||||
|
|
Loading…
Reference in New Issue