Skip to content

Commit e8eda76

Browse files
committed
fix permitted? conditional for render calls
1 parent 56034c1 commit e8eda76

File tree

2 files changed

+17
-3
lines changed

2 files changed

+17
-3
lines changed

actionpack/lib/abstract_controller/rendering.rb

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,9 +77,12 @@ def view_assigns
7777
# render "foo/bar" to render :file => "foo/bar".
7878
# :api: plugin
7979
def _normalize_args(action=nil, options={})
80-
if action.respond_to?(:permitted?) && action.permitted?
81-
raise ArgumentError, "render parameters are not permitted"
82-
action
80+
if action.respond_to?(:permitted?)
81+
if action.permitted?
82+
action
83+
else
84+
raise ArgumentError, "render parameters are not permitted"
85+
end
8386
elsif action.is_a?(Hash)
8487
action
8588
else

actionpack/test/controller/render_test.rb

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ def dynamic_render
5656
render params[:id] # => String, AC:Params
5757
end
5858

59+
def dynamic_render_permit
60+
render params[:id].permit(:file)
61+
end
62+
5963
def dynamic_render_with_file
6064
# This is extremely bad, but should be possible to do.
6165
file = params[:id] # => String, AC:Params
@@ -276,6 +280,13 @@ def test_dynamic_render
276280
end
277281
end
278282

283+
def test_permitted_dynamic_render_file_hash
284+
assert File.exist?(File.join(File.dirname(__FILE__), '../../test/abstract_unit.rb'))
285+
response = get :dynamic_render_permit, { id: { file: '../\\../test/abstract_unit.rb' } }
286+
assert_equal File.read(File.join(File.dirname(__FILE__), '../../test/abstract_unit.rb')),
287+
response.body
288+
end
289+
279290
def test_dynamic_render_file_hash
280291
assert_raises ArgumentError do
281292
get :dynamic_render, { id: { file: '../\\../test/abstract_unit.rb' } }

0 commit comments

Comments
 (0)