diff options
-rw-r--r-- | askama_parser/src/expr.rs | 2 | ||||
-rw-r--r-- | askama_parser/src/tests.rs | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/askama_parser/src/expr.rs b/askama_parser/src/expr.rs index 3e63d93..7f82266 100644 --- a/askama_parser/src/expr.rs +++ b/askama_parser/src/expr.rs @@ -254,7 +254,7 @@ impl<'a> Suffix<'a> { let mut in_str = false; let mut escaped = false; - for (i, c) in input.chars().enumerate() { + for (i, c) in input.char_indices() { if !(c == '(' || c == ')') || !in_str { match c { '(' => nested += 1, diff --git a/askama_parser/src/tests.rs b/askama_parser/src/tests.rs index ce300d3..c23d13f 100644 --- a/askama_parser/src/tests.rs +++ b/askama_parser/src/tests.rs @@ -788,3 +788,10 @@ fn test_parse_array() { )], ); } + +#[test] +fn fuzzed_unicode_slice() { + let d = "{eeuuu{b&{!!&{!!11{{ + 0!(!1q҄א!)!!!!!!n!"; + assert!(Ast::from_str(d, &Syntax::default()).is_err()); +} |