From 5068dfc73f56fbd6eb512f9f292b3774b07e2a0d Mon Sep 17 00:00:00 2001 From: NetterSilver <133535268+Silvertree2010@users.noreply.github.com> Date: Sat, 24 Oct 2026 12:12:10 +0200 Subject: [PATCH] Reject plus signs in logo palette hex parser Found while testing crates/trace/src/logo/palette.rs:9-15 (parse_hex) Co-Authored-By: Claude Haiku 5.5 Co-Authored-By: Claude Sonnet 5.5 --- crates/trace/src/logo/palette.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/trace/src/logo/palette.rs b/crates/trace/src/logo/palette.rs index f11331e68..d21995495 100644 --- a/crates/trace/src/logo/palette.rs +++ b/crates/trace/src/logo/palette.rs @@ -8,7 +8,7 @@ pub(crate) const WHITE_MIN: u8 = 245; /// `#rrggbb` or `rrggbb`. pub(crate) fn parse_hex(s: &str) -> Option<[u8; 3]> { let h = s.trim().trim_start_matches('#'); - if h.len() != 6 || !h.is_ascii() { + if h.len() != 6 || !h.bytes().all(|b| b.is_ascii_hexdigit()) { return None; } let v = |i: usize| u8::from_str_radix(h.get(i..i + 2)?, 16).ok(); @@ -403,7 +403,7 @@ mod tests { fn hex_parsing() { assert_eq!(parse_hex("#6C60F6"), Some([0x6c, 0x60, 0xf6])); assert_eq!(parse_hex("ea4335"), Some([0xea, 0x43, 0x35])); - for bad in ["", "#12345", "#1234567", "#gg0000", "é2345z", " "] { + for bad in ["", "#12345", "#1234567", "#gg0000", "é2345z", " ", "+1+2+3", "#+1+2+3"] { assert_eq!(parse_hex(bad), None, "{bad:?}"); } }