From 18709b0b63a365658a0d1ed09b88648a84e5748c Mon Sep 17 00:00:00 2001 From: NetterSilver <133535268+Silvertree2010@users.noreply.github.com> Date: Sat, 31 Oct 2026 05:06:34 +0100 Subject: [PATCH] Reject multiple leading '#' in the colour panel hex parser Found while testing crates/ui-egui/src/panels/color.rs:199-205 (parse_hex) Co-Authored-By: Claude Haiku 5.5 Co-Authored-By: Claude Sonnet 5.5 --- crates/ui-egui/src/panels/color.rs | 3 ++- crates/ui-egui/src/panels/color/tests.rs | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/crates/ui-egui/src/panels/color.rs b/crates/ui-egui/src/panels/color.rs index f9567e988..00e32808a 100644 --- a/crates/ui-egui/src/panels/color.rs +++ b/crates/ui-egui/src/panels/color.rs @@ -197,7 +197,8 @@ pub fn hex_digits(c: &Color) -> String { /// Parse a hex field (`E67828`, `#e67828`, `fff`). pub fn parse_hex(s: &str) -> Option { - let s = s.trim().trim_start_matches('#'); + let s = s.trim(); + let s = s.strip_prefix('#').unwrap_or(s); if !(s.len() == 3 || s.len() == 6) || !s.chars().all(|c| c.is_ascii_hexdigit()) { return None; } diff --git a/crates/ui-egui/src/panels/color/tests.rs b/crates/ui-egui/src/panels/color/tests.rs index 548851e6b..cf02301a6 100644 --- a/crates/ui-egui/src/panels/color/tests.rs +++ b/crates/ui-egui/src/panels/color/tests.rs @@ -673,4 +673,6 @@ fn spectrum_and_hex() { assert_eq!(parse_hex("#fff").unwrap().to_hex(), "#ffffff"); assert!(parse_hex("zz").is_none()); assert!(parse_hex("12345").is_none()); + assert!(parse_hex("##e67828").is_none()); + assert!(parse_hex("###fff").is_none()); }