mirror of
https://github.com/github/rails.git
synced 2026-01-09 14:48:08 -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:
@@ -23,7 +23,7 @@ module ActionView #:nodoc:
|
||||
end
|
||||
|
||||
def formats
|
||||
[@mime_type.to_sym]
|
||||
[@mime_type.respond_to?(:ref) ? @mime_type.ref : @mime_type.to_s]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
17
actionpack/test/template/text_test.rb
Normal file
17
actionpack/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
|
||||
Reference in New Issue
Block a user