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

file.c: poisoned NUL

* file.c (rb_get_path_check): path name must not contain NUL bytes.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37163 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2012-10-12 09:18:07 +00:00
parent 84fa14aab1
commit 7085db45e4
3 changed files with 17 additions and 0 deletions

View file

@ -1,3 +1,7 @@
Fri Oct 12 18:18:03 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* file.c (rb_get_path_check): path name must not contain NUL bytes.
Fri Oct 12 16:06:20 2012 NAKAMURA Usaku <usa@ruby-lang.org>
* tool/merger.rb: now can merge revision(s) without --ticket again.

3
file.c
View file

@ -184,6 +184,9 @@ rb_get_path_check(VALUE obj, int level)
rb_raise(rb_eEncCompatError, "path name must be ASCII-compatible (%s): %s",
rb_enc_name(enc), RSTRING_PTR(tmp));
}
StringValueCStr(tmp);
return rb_str_new4(tmp);
}

View file

@ -349,4 +349,14 @@ class TestFile < Test::Unit::TestCase
end
end
end
def test_open_nul
Dir.mktmpdir(__method__.to_s) do |tmpdir|
path = File.join(tmpdir, "foo")
assert_raise(ArgumentError) do
open(path + "\0bar", "w") {}
end
assert_file_not(:exist?, path)
end
end
end