diff --git a/src/naive/datetime/serde.rs b/src/naive/datetime/serde.rs index 3aaa3488fb..0d22fa42e6 100644 --- a/src/naive/datetime/serde.rs +++ b/src/naive/datetime/serde.rs @@ -972,7 +972,11 @@ pub mod ts_seconds { where E: de::Error, { - NaiveDateTime::from_timestamp_opt(value as i64, 0).ok_or_else(|| invalid_ts(value)) + if value > i64::MAX as u64 { + Err(invalid_ts(value)) + } else { + NaiveDateTime::from_timestamp_opt(value as i64, 0).ok_or_else(|| invalid_ts(value)) + } } } } @@ -1104,7 +1108,7 @@ pub mod ts_seconds_option { } } -pub(crate) enum SerdeError { +enum SerdeError { InvalidTimestamp(T), }