From f50b29151cd8cff6b35e7b1fdd5587fa421caf26 Mon Sep 17 00:00:00 2001 From: Nathan Adams Date: Wed, 26 Aug 2020 04:47:47 +0545 Subject: [PATCH] avm1: If a NaN is provided to new Date(timestamp), fail immediately --- core/src/avm1/globals/date.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/avm1/globals/date.rs b/core/src/avm1/globals/date.rs index d8fbc85e4..67aa50f9b 100644 --- a/core/src/avm1/globals/date.rs +++ b/core/src/avm1/globals/date.rs @@ -584,12 +584,17 @@ fn constructor<'gc>( .millisecond_opt(args.get(6))? .adjust_year(|year| if year < 100 { year + 1900 } else { year }) .apply(this); - } else if let LocalResult::Single(time) = - Utc.timestamp_millis_opt(timestamp.coerce_to_f64(activation)? as i64) - { - this.set_date_time(activation.context.gc_context, Some(time)) } else { - this.set_date_time(activation.context.gc_context, None); + let timestamp = timestamp.coerce_to_f64(activation)?; + if timestamp.is_finite() { + if let LocalResult::Single(time) = Utc.timestamp_millis_opt(timestamp as i64) { + this.set_date_time(activation.context.gc_context, Some(time)) + } else { + this.set_date_time(activation.context.gc_context, None); + } + } else { + this.set_date_time(activation.context.gc_context, None); + } } } else { this.set_date_time(