[ruby/yarp] fix: ":" at the end of a file

Previously this resulted in invalid memory access.

Found by the fuzzer.

https://github.com/ruby/yarp/commit/c781c9fcd2
This commit is contained in:
Mike Dalessio 2023-08-29 15:12:06 -04:00 коммит произвёл git
Родитель 3da139d284
Коммит 476f38d62d
2 изменённых файлов: 2 добавлений и 1 удалений

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

@ -13,4 +13,5 @@ class FuzzerTest < Test::Unit::TestCase
end
snippet "incomplete global variable", "$"
snippet "incomplete symbol", ":"
end

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

@ -6581,7 +6581,7 @@ parser_lex(yp_parser_t *parser) {
LEX(YP_TOKEN_COLON_COLON);
}
if (lex_state_end_p(parser) || yp_char_is_whitespace(*parser->current.end) || peek(parser) == '#') {
if (lex_state_end_p(parser) || yp_char_is_whitespace(peek(parser)) || peek(parser) == '#') {
lex_state_set(parser, YP_LEX_STATE_BEG);
LEX(YP_TOKEN_COLON);
}