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;
|
||||
|
||||
ASSERT(JulianDate > EPOCH_JULIAN_DATE);
|
||||
ASSERT (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;
|
||||
|
@ -420,16 +420,9 @@ LibSetTime (
|
|||
EFI_STATUS Status;
|
||||
UINTN EpochSeconds;
|
||||
|
||||
// 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.
|
||||
// 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) ||
|
||||
// Check the input parameters are within the range specified by UEFI
|
||||
if ((Time->Year < 1900) ||
|
||||
(Time->Year > 9999) ||
|
||||
(Time->Month < 1 ) ||
|
||||
(Time->Month > 12 ) ||
|
||||
(!DayValid (Time) ) ||
|
||||
|
@ -444,6 +437,15 @@ LibSetTime (
|
|||
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
|
||||
if (!mPL031Initialized) {
|
||||
Status = InitializePL031 ();
|
||||
|
|
Loading…
Reference in New Issue