Re: [PATCH v2] system/rtc: Fix a possible year-2038 integer overflow problem
Laurent Vivier <[email protected]> Mon, 18 May 2026 18:57:19 +0200
| Newsgroups | org.nongnu.qemu-trivial,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
Le 18/05/2026 à 18:34, Thomas Huth a écrit : > From: Thomas Huth <[email protected]> > > 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 <[email protected]> > --- > v2: Use time_t instead of int64_t > > system/rtc.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/system/rtc.c b/system/rtc.c > index f13dd392a76..018609a4f9a 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; > /***********************************************************/ Reviewed-by: Laurent Vivier <[email protected]>