From 6eab49a40abcc743ddffcd5fc7103acbea06b215 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Mon, 29 Jul 2019 12:10:15 -0700 Subject: [PATCH] Revert "Do not always taint the result of File#path" This reverts commit 1a759bfe5d554c22571d2e6e4e5998cf06a7b98f. This fails on some operating systems. --- file.c | 2 +- test/readline/test_readline.rb | 5 ----- test/ruby/test_file_exhaustive.rb | 16 ---------------- 3 files changed, 1 insertion(+), 22 deletions(-) diff --git a/file.c b/file.c index 70f32833ba..0742c52d66 100644 --- a/file.c +++ b/file.c @@ -475,7 +475,7 @@ rb_file_path(VALUE obj) rb_raise(rb_eIOError, "File is unnamed (TMPFILE?)"); } - return rb_str_dup(fptr->pathv); + return rb_obj_taint(rb_str_dup(fptr->pathv)); } static size_t diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb index e71d329973..e040ac53c3 100644 --- a/test/readline/test_readline.rb +++ b/test/readline/test_readline.rb @@ -41,11 +41,6 @@ module BasetestReadline assert_equal("> ", stdout.read(2)) assert_equal(1, Readline::HISTORY.length) assert_equal("hello", Readline::HISTORY[0]) - - # Work around lack of SecurityError in Reline - # test mode with tainted prompt - return if kind_of?(TestRelineAsReadline) - Thread.start { $SAFE = 1 assert_raise(SecurityError) do diff --git a/test/ruby/test_file_exhaustive.rb b/test/ruby/test_file_exhaustive.rb index a702ed55e7..98a894698d 100644 --- a/test/ruby/test_file_exhaustive.rb +++ b/test/ruby/test_file_exhaustive.rb @@ -187,22 +187,6 @@ class TestFileExhaustive < Test::Unit::TestCase end end - def test_path_taint - [regular_file, utf8_file].each do |file| - 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