Use the reference for the mime type to get the format

Before we were calling to_sym in the mime type, even when it is unknown
what can cause denial of service since symbols are not removed by the
garbage collector.

Fixes: CVE-2014-0082
上级 1879c259
......@@ -27,7 +27,7 @@ def render(*args)
end
def formats
[@type.to_sym]
[@type.respond_to?(:ref) ? @type.ref : @type.to_s]
end
end
end
......
......@@ -27,7 +27,7 @@ def render(*args)
end
def formats
[@type.to_sym]
[@type.respond_to?(:ref) ? @type.ref : @type.to_s]
end
end
end
......
require 'abstract_unit'
class HTMLTest < ActiveSupport::TestCase
test 'formats returns symbol for recognized MIME type' do
assert_equal [:html], ActionView::Template::HTML.new('', :html).formats
end
test 'formats returns string for recognized MIME type when MIME does not have symbol' do
foo = Mime::Type.lookup("foo")
assert_nil foo.to_sym
assert_equal ['foo'], ActionView::Template::HTML.new('', foo).formats
end
test 'formats returns string for unknown MIME type' do
assert_equal ['foo'], ActionView::Template::HTML.new('', 'foo').formats
end
end
require 'abstract_unit'
class TextTest < ActiveSupport::TestCase
test 'formats returns symbol for recognized MIME type' do
assert_equal [:text], ActionView::Template::Text.new('', :text).formats
end
test 'formats returns string for recognized MIME type when MIME does not have symbol' do
foo = Mime::Type.lookup("foo")
assert_nil foo.to_sym
assert_equal ['foo'], ActionView::Template::Text.new('', foo).formats
end
test 'formats returns string for unknown MIME type' do
assert_equal ['foo'], ActionView::Template::Text.new('', 'foo').formats
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册