From 24bb54b72b1cf52ba99cb25e1088f9dcec0c336b Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Mon, 8 Jan 2024 16:40:27 -0800 Subject: [PATCH] Fixed Date constructor for overflows and with NaN values. Found by UndefinedBehaviorSanitizer. --- src/njs_date.c | 8 ++++++++ 1 file changed, 8 insertions(+) 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; } -- 2.47.3