mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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
This commit is contained in:
parent
1879c259b8
commit
33cb47ee48
4 changed files with 36 additions and 2 deletions
|
@ -27,7 +27,7 @@ module ActionView #:nodoc:
|
||||||
end
|
end
|
||||||
|
|
||||||
def formats
|
def formats
|
||||||
[@type.to_sym]
|
[@type.respond_to?(:ref) ? @type.ref : @type.to_s]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -27,7 +27,7 @@ module ActionView #:nodoc:
|
||||||
end
|
end
|
||||||
|
|
||||||
def formats
|
def formats
|
||||||
[@type.to_sym]
|
[@type.respond_to?(:ref) ? @type.ref : @type.to_s]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
17
actionview/test/template/html_test.rb
Normal file
17
actionview/test/template/html_test.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
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
|
17
actionview/test/template/text_test.rb
Normal file
17
actionview/test/template/text_test.rb
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
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
|
Loading…
Reference in a new issue