mirror of
https://github.com/askama-rs/askama.git
synced 2025-10-02 15:25:19 +00:00
Add failing test for excessively long syntax delimiters
This commit is contained in:
parent
c1be649d90
commit
f8bb54bd96
@ -1,5 +1,5 @@
|
|||||||
use crate::node::{Lit, Whitespace, Ws};
|
use crate::node::{Lit, Whitespace, Ws};
|
||||||
use crate::{Ast, Expr, Filter, InnerSyntax, Node, Num, StrLit, Syntax, WithSpan};
|
use crate::{Ast, Expr, Filter, InnerSyntax, Node, Num, StrLit, Syntax, SyntaxBuilder, WithSpan};
|
||||||
|
|
||||||
impl<T> WithSpan<'static, T> {
|
impl<T> WithSpan<'static, T> {
|
||||||
fn no_span(inner: T) -> Self {
|
fn no_span(inner: T) -> Self {
|
||||||
@ -1064,3 +1064,36 @@ fn fuzzed_filter_recursion() {
|
|||||||
const TEMPLATE: &str = include_str!("../tests/filter-recursion.txt");
|
const TEMPLATE: &str = include_str!("../tests/filter-recursion.txt");
|
||||||
assert!(Ast::from_str(TEMPLATE, None, &Syntax::default()).is_err());
|
assert!(Ast::from_str(TEMPLATE, None, &Syntax::default()).is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn fuzzed_excessive_syntax_lengths() {
|
||||||
|
let syntax = SyntaxBuilder {
|
||||||
|
name: "test",
|
||||||
|
block_start: Some("\0*DD\0\0"),
|
||||||
|
block_end: Some(
|
||||||
|
"\0]***NEWFILE\u{1f}***:7/v/.-3/\u{1b}/~~~~z~0/*:7/v/./t/t/.p//NEWVILE**::7/v",
|
||||||
|
),
|
||||||
|
expr_start: Some("/."),
|
||||||
|
expr_end: None,
|
||||||
|
comment_start: Some(include_str!(
|
||||||
|
"../tests/excessive_syntax_lengths-comment-start.bin"
|
||||||
|
)),
|
||||||
|
comment_end: None,
|
||||||
|
}
|
||||||
|
.to_syntax()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
let (sender, receiver) = std::sync::mpsc::channel();
|
||||||
|
let test = std::thread::spawn(move || {
|
||||||
|
let result = Ast::from_str(
|
||||||
|
include_str!("../tests/excessive_syntax_lengths-source.bin"),
|
||||||
|
None,
|
||||||
|
&syntax,
|
||||||
|
);
|
||||||
|
sender.send(result).unwrap();
|
||||||
|
});
|
||||||
|
let _: Result<Ast<'_>, crate::ParseError> = receiver
|
||||||
|
.recv_timeout(std::time::Duration::from_secs(3))
|
||||||
|
.expect("timeout");
|
||||||
|
test.join().unwrap();
|
||||||
|
}
|
||||||
|
BIN
rinja_parser/tests/excessive_syntax_lengths-comment-start.bin
Normal file
BIN
rinja_parser/tests/excessive_syntax_lengths-comment-start.bin
Normal file
Binary file not shown.
BIN
rinja_parser/tests/excessive_syntax_lengths-source.bin
Normal file
BIN
rinja_parser/tests/excessive_syntax_lengths-source.bin
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user