Skip to content

Commit ec9b985

Browse files
committed
Ignore script_name query parameter in generated URLs
1 parent 4626f6e commit ec9b985

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

Diff for: lib/will_paginate/view_helpers/action_view.rb

+3-1
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ def infer_collection_from_controller
9999
class LinkRenderer < ViewHelpers::LinkRenderer
100100
protected
101101

102+
GET_PARAMS_BLACKLIST = [:script_name]
103+
102104
def default_url_params
103105
{}
104106
end
@@ -118,7 +120,7 @@ def url(page)
118120

119121
def merge_get_params(url_params)
120122
if @template.respond_to? :request and @template.request and @template.request.get?
121-
symbolized_update(url_params, @template.params)
123+
symbolized_update(url_params, @template.params, GET_PARAMS_BLACKLIST)
122124
end
123125
url_params
124126
end

Diff for: lib/will_paginate/view_helpers/link_renderer.rb

+3-2
Original file line numberDiff line numberDiff line change
@@ -114,11 +114,12 @@ def rel_value(page)
114114
end
115115
end
116116

117-
def symbolized_update(target, other)
117+
def symbolized_update(target, other, blacklist = nil)
118118
other.each do |key, value|
119119
key = key.to_sym
120120
existing = target[key]
121-
121+
next if blacklist && blacklist.include?(key)
122+
122123
if value.is_a?(Hash) and (existing.is_a?(Hash) or existing.nil?)
123124
symbolized_update(existing || (target[key] = {}), value)
124125
else

Diff for: spec/view_helpers/action_view_spec.rb

+7
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,13 @@ def renderer.gap() '<span class="my-gap">~~</span>' end
201201
assert_no_links_match /99/
202202
assert_no_links_match /ftp/
203203
end
204+
205+
it "doesn't allow tampering with script_name" do
206+
request.params :script_name => 'p0wned'
207+
paginate
208+
assert_links_match %r{^/foo/bar}
209+
assert_no_links_match /p0wned/
210+
end
204211

205212
it "should not preserve parameters on POST" do
206213
request.post

0 commit comments

Comments
 (0)