From: Miroslav Lichvar Date: Wed, 21 May 2025 06:43:12 +0000 (+0200) Subject: getdate+nts+rtc: avoid some coverity false positives X-Git-Tag: 4.7-pre1~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bda2ff77e831676c4e6b7c3de28c21e00424246a;p=thirdparty%2Fchrony.git getdate+nts+rtc: avoid some coverity false positives Modify the code to avoid making the following calls incorrectly reported as important findings by the coverity static analyzer: - memset() of size 0 at the end of an array - mktime() on a struct tm that has uninitialized tm_yday --- diff --git a/getdate.y b/getdate.y index c305fb7c..8fd56879 100644 --- a/getdate.y +++ b/getdate.y @@ -907,6 +907,7 @@ get_date (const char *p, const time_t *now) yyHour = tmp->tm_hour; yyMinutes = tmp->tm_min; yySeconds = tmp->tm_sec; + memset(&tm, 0, sizeof (tm)); tm.tm_isdst = tmp->tm_isdst; yyMeridian = MER24; yyRelSeconds = 0; @@ -943,7 +944,6 @@ get_date (const char *p, const time_t *now) tm.tm_hour += yyRelHour; tm.tm_min += yyRelMinutes; tm.tm_sec += yyRelSeconds; - tm.tm_wday = 0; /* Let mktime deduce tm_isdst if we have an absolute timestamp, or if the relative timestamp mentions days, months, or years. */ diff --git a/nts_ke_server.c b/nts_ke_server.c index 26cc0cf0..33aef082 100644 --- a/nts_ke_server.c +++ b/nts_ke_server.c @@ -536,7 +536,8 @@ generate_key(int index) BRIEF_ASSERT(key_length <= sizeof (key->key)); UTI_GetRandomBytesUrandom(key->key, key_length); - memset(key->key + key_length, 0, sizeof (key->key) - key_length); + if (key_length < sizeof (key->key)) + memset(key->key + key_length, 0, sizeof (key->key) - key_length); UTI_GetRandomBytes(&key->id, sizeof (key->id)); /* Encode the index in the lowest bits of the ID */ diff --git a/rtc_linux.c b/rtc_linux.c index 31f495b3..d15c78f9 100644 --- a/rtc_linux.c +++ b/rtc_linux.c @@ -359,13 +359,13 @@ t_from_rtc(struct rtc_time *rtc_raw, int utc) time_t t1, t2; /* Convert to seconds since 1970 */ + memset(&rtc_tm, 0, sizeof (rtc_tm)); rtc_tm.tm_sec = rtc_raw->tm_sec; rtc_tm.tm_min = rtc_raw->tm_min; rtc_tm.tm_hour = rtc_raw->tm_hour; rtc_tm.tm_mday = rtc_raw->tm_mday; rtc_tm.tm_mon = rtc_raw->tm_mon; rtc_tm.tm_year = rtc_raw->tm_year; - rtc_tm.tm_wday = 0; temp1 = rtc_tm; temp1.tm_isdst = 0;