From: Dmitry Volyntsev Date: Tue, 9 Jan 2024 00:40:27 +0000 (-0800) Subject: Fixed Date constructor for overflows and with NaN values. X-Git-Url: http://www.kaiwu.me/postgresql/commit/?a=commitdiff_plain;h=24bb54b72b1cf52ba99cb25e1088f9dcec0c336b;p=njs.git Fixed Date constructor for overflows and with NaN values. Found by UndefinedBehaviorSanitizer. --- diff --git a/src/njs_date.c b/src/njs_date.c index 788ed41d..8f0850ab 100644 --- a/src/njs_date.c +++ b/src/njs_date.c @@ -243,11 +243,19 @@ njs_make_date(int64_t tm[], njs_bool_t local) days = njs_make_day(tm[NJS_DATE_YR], tm[NJS_DATE_MON], tm[NJS_DATE_DAY]); + if (njs_slow_path(isnan(days))) { + return NAN; + } + time = ((tm[NJS_DATE_HR] * 60.0 + tm[NJS_DATE_MIN]) * 60.0 + tm[NJS_DATE_SEC]) * 1000.0 + tm[NJS_DATE_MSEC]; time += days * 86400000.0; + if (time < -8.64e15 || time > 8.64e15) { + return NAN; + } + if (local) { time += njs_tz_offset(time) * 60000; }