[ruby/rdoc] Use File.open to fix the OS Command Injection vulnerability in CVE-2021-31799

https://github.com/ruby/rdoc/commit/a7f5d6ab88
This commit is contained in:
aycabta 2021-05-02 20:52:23 +09:00
Родитель 9edad0df74
Коммит b1c73f239f
2 изменённых файлов: 13 добавлений и 1 удалений

Просмотреть файл

@ -444,7 +444,7 @@ The internal error was:
files.reject do |file, *|
file =~ /\.(?:class|eps|erb|scpt\.txt|svg|ttf|yml)$/i or
(file =~ /tags$/i and
open(file, 'rb') { |io|
File.open(file, 'rb') { |io|
io.read(100) =~ /\A(\f\n[^,]+,\d+$|!_TAG_)/
})
end

Просмотреть файл

@ -456,6 +456,18 @@ class TestRDocRDoc < RDoc::TestCase
end
end
def test_remove_unparseable_CVE_2021_31799
temp_dir do
file_list = ['| touch evil.txt && echo tags']
file_list.each do |f|
FileUtils.touch f
end
assert_equal file_list, @rdoc.remove_unparseable(file_list)
assert_equal file_list, Dir.children('.')
end
end
def test_setup_output_dir
Dir.mktmpdir {|d|
path = File.join d, 'testdir'