[ruby/yarp] fix: string escape char "\" at the end of a file

Previously this resulted in invalid memory access.

Found by the fuzzer.

178862e2ca
This commit is contained in:
Mike Dalessio 2023-08-29 15:38:48 -04:00 committed by git
parent 476f38d62d
commit 6f8126faeb
2 changed files with 7 additions and 0 deletions

View file

@ -14,4 +14,5 @@ class FuzzerTest < Test::Unit::TestCase
snippet "incomplete global variable", "$"
snippet "incomplete symbol", ":"
snippet "incomplete escaped string", '"\\'
end

View file

@ -7224,6 +7224,12 @@ parser_lex(yp_parser_t *parser) {
breakpoint = yp_strpbrk(parser, breakpoint + 1, breakpoints, parser->end - (breakpoint + 1));
break;
case '\\': {
// Check that we're not at the end of the file.
if (breakpoint + 1 >= parser->end) {
breakpoint = NULL;
break;
}
// If we hit escapes, then we need to treat the next token
// literally. In this case we'll skip past the next character and
// find the next breakpoint.