]> git.earman.xyz Git - sensor-watch.git/commitdiff
fix int32 overflow when setting a year past 2067
authorAlessandro Genova <ales.genova@gmail.com>
Tue, 23 Sep 2025 03:42:47 +0000 (23:42 -0400)
committerAlessandro Genova <ales.genova@gmail.com>
Thu, 25 Sep 2025 03:23:27 +0000 (23:23 -0400)
watch-faces/settings/set_time_face.c
watch-library/shared/watch/watch_utility.c

index 63fc34fdfe2503342922697849964a75f93568f8..f394347db0b55fc2fc300c061f2f7220161a512b 100644 (file)
@@ -46,7 +46,7 @@ static void _handle_alarm_button(watch_date_time_t date_time, uint8_t current_pa
             current_offset = movement_get_current_timezone_offset_for_zone(movement_get_timezone_index());
             return;
         case 0: // year
-            date_time.unit.year = ((date_time.unit.year % 60) + 1);
+            date_time.unit.year = (date_time.unit.year + 1) % 60;
             break;
         case 1: // month
             date_time.unit.month = (date_time.unit.month % 12) + 1;
index 6d024032e95aa5070031e62bcfd9b76b18ed50b9..7179aa72077ea612d5308d6aefa74fd1b06c8d5e 100644 (file)
@@ -205,7 +205,8 @@ uint32_t watch_utility_date_time_to_unix_time(watch_date_time_t date_time, int32
 watch_date_time_t watch_utility_date_time_from_unix_time(uint32_t timestamp, int32_t utc_offset) {
     watch_date_time_t retval;
     retval.reg = 0;
-    int32_t days, secs;
+    uint32_t secs;
+    int32_t days;
     int32_t remdays, remsecs, remyears;
     int32_t qc_cycles, c_cycles, q_cycles;
     int32_t years, months;