details: https://hg.nginx.org/njs/rev/57071ecadeb5 branches: changeset: 2251:57071ecadeb5 user: Dmitry Volyntsev <xei...@nginx.com> date: Mon Jan 08 16:40:27 2024 -0800 description: Fixed Date constructor for overflows and with NaN values.
Found by UndefinedBehaviorSanitizer. diffstat: src/njs_date.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diffs (23 lines): diff -r 4a15613f4e8b -r 57071ecadeb5 src/njs_date.c --- a/src/njs_date.c Tue Dec 19 12:37:05 2023 -0800 +++ b/src/njs_date.c Mon Jan 08 16:40:27 2024 -0800 @@ -243,11 +243,19 @@ njs_make_date(int64_t tm[], njs_bool_t l 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; } _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel