Merge pull request #582 from Kijewski/4654117948817408

parser: reject unclosed prefixed string
This commit is contained in:
Guillaume Gomez 2025-08-21 23:31:41 +02:00 committed by GitHub
commit 3ab9ff6216
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 1 deletions

View File

@ -1029,7 +1029,7 @@ impl<'a: 'l, 'l> Suffix<'a> {
// raw string string or identifier // raw string string or identifier
"r" => None, "r" => None,
// a simple identifier // a simple identifier
_ if hashes == 0 => return Ok(()), _ if hashes == 0 && quot.is_none() => return Ok(()),
// reserved prefix: reject // reserved prefix: reject
_ => { _ => {
return cut_error!( return cut_error!(

View File

@ -1710,3 +1710,17 @@ fn regression_tests_span_change() {
))] ))]
); );
} }
#[test]
fn test_unclosed_prefixed_string() {
// Regression test for <https://issues.oss-fuzz.com/issues/440177293>.
let syntax = Syntax::default();
for test in ["{{ x!(i\") }}", "{{ x!(i\"\") }}"] {
assert!(
Ast::from_str(test, None, &syntax)
.unwrap_err()
.to_string()
.contains("reserved prefix `i#`")
);
}
}