aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Reinsch <michael@mobalean.com>2012-03-08 20:26:10 +0900
committerMichael Reinsch <michael@mobalean.com>2012-03-08 20:41:25 +0900
commit7d5fbf846b432821d0179553fa902d2de9372172 (patch)
treea32401885068ab5cbd68fd6d08a513bdf34fe2b9
parentefc0d0373e04705a90dd89dd352274bd8e409ca1 (diff)
downloadrails-7d5fbf846b432821d0179553fa902d2de9372172.tar.gz
rails-7d5fbf846b432821d0179553fa902d2de9372172.tar.bz2
rails-7d5fbf846b432821d0179553fa902d2de9372172.zip
fix ArgumentError being raised in case of invalid byte sequences
-rw-r--r--actionpack/lib/action_dispatch/middleware/static.rb1
-rw-r--r--actionpack/test/dispatch/static_test.rb4
2 files changed, 5 insertions, 0 deletions
diff --git a/actionpack/lib/action_dispatch/middleware/static.rb b/actionpack/lib/action_dispatch/middleware/static.rb
index 63b7422287..9073e6582d 100644
--- a/actionpack/lib/action_dispatch/middleware/static.rb
+++ b/actionpack/lib/action_dispatch/middleware/static.rb
@@ -39,6 +39,7 @@ module ActionDispatch
end
def escape_glob_chars(path)
+ path.force_encoding('binary') if path.respond_to? :force_encoding
path.gsub(/[*?{}\[\]]/, "\\\\\\&")
end
end
diff --git a/actionpack/test/dispatch/static_test.rb b/actionpack/test/dispatch/static_test.rb
index 092ca3e20a..112f470786 100644
--- a/actionpack/test/dispatch/static_test.rb
+++ b/actionpack/test/dispatch/static_test.rb
@@ -7,6 +7,10 @@ module StaticTests
assert_equal "Hello, World!", get("/nofile").body
end
+ def test_handles_urls_with_bad_encoding
+ assert_equal "Hello, World!", get("/doorkeeper%E3E4").body
+ end
+
def test_sets_cache_control
response = get("/index.html")
assert_html "/index.html", response