From 8d2b61549d4c5924345e93130b50499b35db9ccb Mon Sep 17 00:00:00 2001 From: pommicket Date: Tue, 9 Sep 2025 13:59:20 -0400 Subject: Check for bad decimal locations --- src/lib.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/lib.rs b/src/lib.rs index 4fb011e..3e3c8d6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -248,6 +248,15 @@ fn parse_float(location: &Location, string: &str) -> Result { }) { return Err(bad_float()); } + for (i, c) in string.bytes().enumerate() { + if c == b'.' { + // decimal point must be preceded and followed by a digit + let ok = |j| string.as_bytes().get(j).is_some_and(u8::is_ascii_digit); + if !(ok(i.wrapping_sub(1)) && ok(i + 1)) { + return Err(bad_float()); + } + } + } string.parse().map_err(|_| bad_float()) } -- cgit v1.2.3