зеркало из https://github.com/github/ruby.git
ruby.c: taint ARGV on Windows
* ruby.c (external_str_new_cstr): strings come from the external should be tainted. [ruby-dev:50596] [Bug #14941] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64071 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
c0e478ed75
Коммит
9fbb66610c
4
ruby.c
4
ruby.c
|
@ -2186,7 +2186,9 @@ external_str_new_cstr(const char *p)
|
|||
{
|
||||
#if UTF8_PATH
|
||||
VALUE str = rb_utf8_str_new_cstr(p);
|
||||
return str_conv_enc(str, NULL, rb_default_external_encoding());
|
||||
str = str_conv_enc(str, NULL, rb_default_external_encoding());
|
||||
OBJ_TAINT_RAW(str);
|
||||
return str;
|
||||
#else
|
||||
return rb_external_str_new_cstr(p);
|
||||
#endif
|
||||
|
|
|
@ -1068,6 +1068,13 @@ class TestRubyOptions < Test::Unit::TestCase
|
|||
assert_in_out_err([IO::NULL], success: true)
|
||||
end
|
||||
|
||||
def test_argv_tainted
|
||||
assert_separately(%w[- arg], "#{<<~"begin;"}\n#{<<~'end;'}")
|
||||
begin;
|
||||
assert_predicate(ARGV[0], :tainted?, '[ruby-dev:50596] [Bug #14941]')
|
||||
end;
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def mjit_force_enabled?
|
||||
|
|
Загрузка…
Ссылка в новой задаче