mirror of
https://github.com/askama-rs/askama.git
synced 2025-12-30 05:12:03 +00:00
Limit maximum number of references in generics to prevent syn stack overflow
This commit is contained in:
parent
7fe8788f82
commit
04cf06beb4
@ -1289,6 +1289,10 @@ impl<'a: 'l, 'l> TyGenerics<'a> {
|
||||
|
||||
let p = ws((repeat(0.., ws('&')), path, opt(Self::args)));
|
||||
let ((refs, path, args), span) = p.with_span().parse_next(i)?;
|
||||
let max_refs = 20;
|
||||
if refs > max_refs {
|
||||
return cut_error!(format!("too many references (> {max_refs})"), span);
|
||||
}
|
||||
|
||||
if let [name] = path.as_slice() {
|
||||
if matches!(**name, "super" | "self" | "crate") {
|
||||
|
||||
Binary file not shown.
7
testing/tests/ui/references.rs
Normal file
7
testing/tests/ui/references.rs
Normal file
@ -0,0 +1,7 @@
|
||||
use askama::Template;
|
||||
|
||||
#[derive(Template)]
|
||||
#[template(source = "{{J::<&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&e>()}}", ext = "html")]
|
||||
struct X;
|
||||
|
||||
fn main() {}
|
||||
7
testing/tests/ui/references.stderr
Normal file
7
testing/tests/ui/references.stderr
Normal file
@ -0,0 +1,7 @@
|
||||
error: too many references (> 20)
|
||||
--> <source attribute>:1:6
|
||||
"&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&e>()}}"
|
||||
--> tests/ui/references.rs:4:21
|
||||
|
|
||||
4 | #[template(source = "{{J::<&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&e>()}}", ext = "html")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
Loading…
x
Reference in New Issue
Block a user