mirror of
https://github.com/askama-rs/askama.git
synced 2025-10-02 15:25:19 +00:00
parser: reject excessively long syntax delimiters
This commit is contained in:
parent
f8bb54bd96
commit
9c53dcf7ff
@ -801,6 +801,14 @@ impl<'a> SyntaxBuilder<'a> {
|
|||||||
"delimiters must be at least two characters long. \
|
"delimiters must be at least two characters long. \
|
||||||
The {k} delimiter ({s:?}) is too short",
|
The {k} delimiter ({s:?}) is too short",
|
||||||
));
|
));
|
||||||
|
} else if s.len() > 32 {
|
||||||
|
return Err(format!(
|
||||||
|
"delimiters must be at most 32 characters long. \
|
||||||
|
The {k} delimiter ({:?}...) is too long",
|
||||||
|
&s[..(16..=s.len())
|
||||||
|
.find(|&i| s.is_char_boundary(i))
|
||||||
|
.unwrap_or(s.len())],
|
||||||
|
));
|
||||||
} else if s.chars().any(char::is_whitespace) {
|
} else if s.chars().any(char::is_whitespace) {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"delimiters may not contain white spaces. \
|
"delimiters may not contain white spaces. \
|
||||||
|
@ -1066,6 +1066,9 @@ fn fuzzed_filter_recursion() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
#[should_panic = "called `Result::unwrap()` on an `Err` value: \
|
||||||
|
\"delimiters must be at most 32 characters long. The closing block delimiter \
|
||||||
|
(\\\"\\\\0]***NEWFILE\\\\u{1f}***\\\"...) is too long\""]
|
||||||
fn fuzzed_excessive_syntax_lengths() {
|
fn fuzzed_excessive_syntax_lengths() {
|
||||||
let syntax = SyntaxBuilder {
|
let syntax = SyntaxBuilder {
|
||||||
name: "test",
|
name: "test",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user