From 2bb7c7206e57a3653fad53ad60016888c12e2a81 Mon Sep 17 00:00:00 2001 From: Phillip Lord Date: Tue, 21 Jun 2022 16:08:54 +0100 Subject: [PATCH] Properly escape anchor names --- components/utils/src/anchors.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/components/utils/src/anchors.rs b/components/utils/src/anchors.rs index 06af56b47b..fe86e96082 100644 --- a/components/utils/src/anchors.rs +++ b/components/utils/src/anchors.rs @@ -1,4 +1,5 @@ use libs::regex::Regex; +use libs::regex::escape; pub fn has_anchor_id(content: &str, anchor: &str) -> bool { let checks = anchor_id_checks(anchor); @@ -6,7 +7,8 @@ pub fn has_anchor_id(content: &str, anchor: &str) -> bool { } fn anchor_id_checks(anchor: &str) -> Regex { - Regex::new(&format!(r#"\s(?i)(id|name) *= *("|')*{}("|'| |>)+"#, anchor)).unwrap() + Regex::new(&format!(r#"\s(?i)(id|name) *= *("|')*{}("|'| |>)+"#, + escape(anchor))).unwrap() } #[cfg(test)] @@ -44,7 +46,11 @@ mod tests { assert!(m(r#""#)); + // Escaped Anchors + assert!(check("fred?george", r#""#)); + assert!(check("fred.george", r#""#)); + // Non matchers - assert!(!m(r#""#)) + assert!(!m(r#""#)); } }