From e981b25e06ded8a5b4802736968adddec0652742 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Max=20Mittelst=C3=A4dt?= <62167861+TheGalitube@users.noreply.github.com> Date: Wed, 28 Oct 2026 12:07:28 +0000 Subject: [PATCH] Reject EXIF offsets beyond 18 hours Found while testing crates/meta/src/datetime.rs:77 Co-Authored-By: GPT-6-Luna --- crates/meta/src/datetime.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/meta/src/datetime.rs b/crates/meta/src/datetime.rs index 4b7d09634..bdc42dafb 100644 --- a/crates/meta/src/datetime.rs +++ b/crates/meta/src/datetime.rs @@ -74,7 +74,7 @@ impl DateTime { None if rest.len() == 4 => (num(rest.get(..2)?)?, num(rest.get(2..)?)?), None => (num(rest)?, 0), }; - if h > 18 || m > 59 { + if h > 18 || m > 59 || (h == 18 && m > 0) { return None; } Some(sign * (h * 60 + m) as i16) @@ -185,6 +185,10 @@ mod tests { assert_eq!(DateTime::parse_offset("-05:30"), Some(-330)); assert_eq!(DateTime::parse_offset("Z"), Some(0)); assert_eq!(DateTime::parse_offset("+0930"), Some(570)); + assert_eq!(DateTime::parse_offset("+18:00"), Some(1080)); + assert_eq!(DateTime::parse_offset("-18:00"), Some(-1080)); + assert_eq!(DateTime::parse_offset("+18:01"), None); + assert_eq!(DateTime::parse_offset("-18:01"), None); assert_eq!(DateTime::parse_offset(" : "), None); assert_eq!(DateTime::parse_offset("+99:00"), None); }