Commit ae84c738e4 for qemu.org

commit ae84c738e40339cc0f22773dd4692de529d88739
Author: Thomas Huth <thuth@redhat.com>
Date:   Mon May 18 18:34:08 2026 +0200

    system/rtc: Fix a possible year-2038 integer overflow problem

    rtc_realtime_clock_offset is initialized with:

      rtc_realtime_clock_offset = qemu_clock_get_ms(QEMU_CLOCK_REALTIME) / 1000;

    And QEMU_CLOCK_REALTIME might be based on gettimeofday() in certain
    cases (see get_clock_realtime() in include/qemu/timer.h). So this
    counter will exceed 32 bits in the year 2038, thus we should not
    store this value in a normal integer variable. Change it to a time_t
    to fix the problem.
    And while we're at it, also adjust the nearby rtc_host_datetime_offset
    variable to be on the safe side in the related code.

    Signed-off-by: Thomas Huth <thuth@redhat.com>
    Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
    Reviewed-by: Laurent Vivier <laurent@vivier.eu>
    Reviewed-by: Michael Tokarev <mjt@tls.msk.ru>
    Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>

diff --git a/system/rtc.c b/system/rtc.c
index f13dd392a7..018609a4f9 100644
--- a/system/rtc.c
+++ b/system/rtc.c
@@ -41,8 +41,8 @@ static enum {
     RTC_BASE_DATETIME,
 } rtc_base_type = RTC_BASE_UTC;
 static time_t rtc_ref_start_datetime;
-static int rtc_realtime_clock_offset; /* used only with QEMU_CLOCK_REALTIME */
-static int rtc_host_datetime_offset = -1; /* valid & used only with
+static time_t rtc_realtime_clock_offset; /* used only with QEMU_CLOCK_REALTIME */
+static time_t rtc_host_datetime_offset = -1; /* valid & used only with
                                              RTC_BASE_DATETIME */
 QEMUClockType rtc_clock;
 /***********************************************************/