1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

ast.c: Do not taint TOPLEVEL_BINDING

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63532 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
yui-knk 2018-05-31 05:49:56 +00:00
parent b9212a7771
commit a97d22a004

View file

@ -54,15 +54,11 @@ rb_ast_s_parse(VALUE module, VALUE str)
{
VALUE obj;
rb_ast_t *ast = 0;
rb_binding_t *toplevel_binding;
const VALUE parser = rb_parser_new();
GetBindingPtr(rb_const_get(rb_cObject, rb_intern("TOPLEVEL_BINDING")),
toplevel_binding);
str = rb_check_string_type(str);
rb_parser_set_context(parser, &toplevel_binding->block, 1);
rb_parser_set_context(parser, NULL, 1);
ast = rb_parser_compile_string_path(parser, rb_str_new_cstr("no file name"), str, 1);
if (!ast->body.root) return Qnil;
@ -77,18 +73,14 @@ rb_ast_s_parse_file(VALUE module, VALUE path)
{
VALUE obj, f;
rb_ast_t *ast = 0;
rb_binding_t *toplevel_binding;
rb_encoding *enc = rb_utf8_encoding();
const VALUE parser = rb_parser_new();
GetBindingPtr(rb_const_get(rb_cObject, rb_intern("TOPLEVEL_BINDING")),
toplevel_binding);
FilePathValue(path);
f = rb_file_open_str(path, "r");
rb_funcall(f, rb_intern("set_encoding"), 2, rb_enc_from_encoding(enc), rb_str_new_cstr("-"));
rb_parser_set_context(parser, &toplevel_binding->block, 1);
rb_parser_set_context(parser, NULL, 1);
ast = rb_parser_compile_file_path(parser, path, f, 1);
rb_io_close(f);