1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Fix broken IPv6 addresses handling

This commit is contained in:
Brian Weaver 2015-04-16 16:20:57 -04:00
parent c8bab30ce5
commit c4a83b5454
2 changed files with 46 additions and 1 deletions

View file

@ -5,7 +5,7 @@ module ActionDispatch
module Http
module URL
IP_HOST_REGEXP = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/
HOST_REGEXP = /(^[^:]+:\/\/)?([^:]+)(?::(\d+$))?/
HOST_REGEXP = /(^[^:]+:\/\/)?(\[[^\]]+\]|[^:]+)(?::(\d+$))?/
PROTOCOL_REGEXP = /^([^:]+)(:)?(\/\/)?$/
mattr_accessor :tld_length

View file

@ -0,0 +1,45 @@
require 'abstract_unit'
class IPv6IntegrationTest < ActionDispatch::IntegrationTest
Routes = ActionDispatch::Routing::RouteSet.new
include Routes.url_helpers
class ::BadRouteRequestController < ActionController::Base
include Routes.url_helpers
def index
render :text => foo_path
end
def foo
redirect_to :action => :index
end
end
Routes.draw do
get "/", :to => 'bad_route_request#index', :as => :index
get "/foo", :to => "bad_route_request#foo", :as => :foo
end
def _routes
Routes
end
APP = build_app Routes
def app
APP
end
test "bad IPv6 redirection" do
# def test_simple_redirect
request_env = {
'REMOTE_ADDR' => 'fd07:2fa:6cff:2112:225:90ff:fec7:22aa',
'HTTP_HOST' => '[fd07:2fa:6cff:2112:225:90ff:fec7:22aa]:3000',
'SERVER_NAME' => '[fd07:2fa:6cff:2112:225:90ff:fec7:22aa]',
'SERVER_PORT' => 3000 }
get '/foo', env: request_env
assert_response :redirect
assert_equal 'http://[fd07:2fa:6cff:2112:225:90ff:fec7:22aa]:3000/', redirect_to_url
end
end