From bca33b5fac2f3cc354975b6a60dbf9eccd7c090d Mon Sep 17 00:00:00 2001 From: 5225225 <5225225@mailbox.org> Date: Sun, 31 Oct 2021 09:17:18 +0000 Subject: [PATCH] Fix error when parsing hex value with non-ASCII --- src/parser/mod.rs | 4 ++++ tests/parser.rs | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 36552a2..d7be605 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -255,6 +255,10 @@ pub fn parse(s: &str) -> Result { } fn parse_hex(s: &str) -> Result> { + if !s.is_ascii() { + return Err(Box::new(ParseColorError::InvalidHex)); + } + let n = s.len(); let (r, g, b, a) = if n == 3 || n == 4 { diff --git a/tests/parser.rs b/tests/parser.rs index 7e9faec..694dd1d 100644 --- a/tests/parser.rs +++ b/tests/parser.rs @@ -195,7 +195,7 @@ fn lime_alpha() { } } -#[cfg(all(feature = "named-colors", features = "lab"))] +#[cfg(all(feature = "named-colors", feature = "lab"))] #[test] fn invalid_format() { let test_data = vec![ @@ -240,6 +240,10 @@ fn invalid_format() { ("cmyk(0,0,0,0)", "Invalid color function."), ("blood", "Invalid unknown format."), ("rgb(255,0,0", "Invalid unknown format."), + ("x£", "Invalid unknown format."), + ("x£x", "Invalid unknown format."), + ("xxx£x", "Invalid unknown format."), + ("xxxxx£x", "Invalid unknown format."), ]; for (s, err_msg) in test_data {