From dbf23bb3b324c4332addc35d2f6b773e1cafe64d Mon Sep 17 00:00:00 2001 From: huangly Date: Fri, 10 May 2024 16:12:29 +0800 Subject: [PATCH] [SYSTIME] Prevents SysTimeToMs computations that may cause miscalculations when calendarTime is too large --- Utilities/misc/stm32_systime.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Utilities/misc/stm32_systime.c b/Utilities/misc/stm32_systime.c index 34238897..18f44e0d 100644 --- a/Utilities/misc/stm32_systime.c +++ b/Utilities/misc/stm32_systime.c @@ -272,7 +272,11 @@ uint32_t SysTimeToMs( SysTime_t sysTime ) DeltaTime.Seconds = UTIL_SYSTIMDriver.BKUPRead_Seconds(); SysTime_t calendarTime = SysTimeSub( sysTime, DeltaTime ); - return calendarTime.Seconds * 1000 + calendarTime.SubSeconds; + int64_t calendar_second = calendarTime.Seconds; + int64_t calendar_subsecond = calendarTime.SubSeconds; + int64_t calendar_time = calendar_second * 1000 + calendar_subsecond; + calendar_time = calendar_time % 4194304000; + return calendar_time; } SysTime_t SysTimeFromMs( uint32_t timeMs )