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

Previously this resulted in invalid memory access.

Found by the fuzzer.

https://github.com/ruby/yarp/commit/178862e2ca
This commit is contained in:
Mike Dalessio 2023-08-29 15:38:48 -04:00 коммит произвёл git
Родитель 476f38d62d
Коммит 6f8126faeb
2 изменённых файлов: 7 добавлений и 0 удалений

Просмотреть файл

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

Просмотреть файл

@ -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.