From 1d7571166fa8ef4bee3264e8a027b49ea9d98bd3 Mon Sep 17 00:00:00 2001 From: Leif Lindholm Date: Thu, 13 Jun 2019 16:48:28 +0100 Subject: [PATCH] EmbeddedPkg: improve TimeBaseLib type safety EfiTimeToEpoch currently returns a UINTN. Also, some internal calculations was using UINTN for fixed-width. Both of these lead to warnings/errors with VS2017. Replace with appropriate fixed-size types. BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=997 Cc: Alexei Fedorov Signed-off-by: Leif Lindholm Acked-by: Ard Biesheuvel Reviewed-by: Philippe Mathieu-Daude --- EmbeddedPkg/Include/Library/TimeBaseLib.h | 4 ++-- EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/EmbeddedPkg/Include/Library/TimeBaseLib.h b/EmbeddedPkg/Include/Library/TimeBaseLib.h index d51059cb1f..4103c89b38 100644 --- a/EmbeddedPkg/Include/Library/TimeBaseLib.h +++ b/EmbeddedPkg/Include/Library/TimeBaseLib.h @@ -1,7 +1,7 @@ /** @file * * Copyright (c) 2016, Hisilicon Limited. All rights reserved. -* Copyright (c) 2016, Linaro Limited. All rights reserved. +* Copyright (c) 2016-2019, Linaro Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * @@ -53,7 +53,7 @@ EpochToEfiTime ( /** Converts EFI_TIME to Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC) **/ -UINTN +UINT32 EFIAPI EfiTimeToEpoch ( IN EFI_TIME *Time diff --git a/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c b/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c index 662cbdd5da..136ce8a51e 100644 --- a/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c +++ b/EmbeddedPkg/Library/TimeBaseLib/TimeBaseLib.c @@ -1,7 +1,7 @@ /** @file * * Copyright (c) 2016, Hisilicon Limited. All rights reserved. -* Copyright (c) 2016, Linaro Limited. All rights reserved. +* Copyright (c) 2016-2019, Linaro Limited. All rights reserved. * * SPDX-License-Identifier: BSD-2-Clause-Patent * @@ -53,9 +53,9 @@ EpochToEfiTime ( m = (((da * 5) + 308) / 153) - 2; d = da - (((m + 4) * 153) / 5) + 122; - Time->Year = y - 4800 + ((m + 2) / 12); + Time->Year = (UINT16)(y - 4800 + ((m + 2) / 12)); Time->Month = ((m + 2) % 12) + 1; - Time->Day = d + 1; + Time->Day = (UINT8)(d + 1); ss = EpochSeconds % 60; a = (EpochSeconds - ss) / 60; @@ -63,9 +63,9 @@ EpochToEfiTime ( b = (a - mm) / 60; hh = b % 24; - Time->Hour = hh; - Time->Minute = mm; - Time->Second = ss; + Time->Hour = (UINT8)hh; + Time->Minute = (UINT8)mm; + Time->Second = (UINT8)ss; Time->Nanosecond = 0; } @@ -99,14 +99,14 @@ EfiGetEpochDays ( /** Converts EFI_TIME to Epoch seconds (elapsed since 1970 JANUARY 01, 00:00:00 UTC) **/ -UINTN +UINT32 EFIAPI EfiTimeToEpoch ( IN EFI_TIME *Time ) { - UINTN EpochDays; // Number of days elapsed since EPOCH_JULIAN_DAY - UINTN EpochSeconds; + UINT32 EpochDays; // Number of days elapsed since EPOCH_JULIAN_DAY + UINT32 EpochSeconds; EpochDays = EfiGetEpochDays (Time); -- 2.39.2