diff options
Diffstat (limited to 'test/ruby/test_file_exhaustive.rb')
-rw-r--r-- | test/ruby/test_file_exhaustive.rb | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index 98a894698d..3cedf97489 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -187,6 +187,23 @@ class TestFileExhaustive < Test::Unit::TestCase end end + def test_path_taint + [regular_file, utf8_file].each do |file| + file.untaint + assert_equal(false, File.open(file) {|f| f.path}.tainted?) + assert_equal(true, File.open(file.dup.taint) {|f| f.path}.tainted?) + o = Object.new + class << o; self; end.class_eval do + define_method(:to_path) { file } + end + assert_equal(false, File.open(o) {|f| f.path}.tainted?) + class << o; self; end.class_eval do + define_method(:to_path) { file.dup.taint } + end + assert_equal(true, File.open(o) {|f| f.path}.tainted?) + end + end + def assert_integer(n) assert_kind_of(Integer, n) end |