Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Changeset 9069

Show
Ignore:
Timestamp:
03/21/08 22:44:04 (4 months ago)
Author:
bitsweat
Message:

Fix an edge case with extra periods in Routing.normalize_paths. Closes #11337 [cavalle, veejar]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/actionpack/lib/action_controller/routing.rb

    r8738 r9069  
    273273 
    274274          # eliminate .. paths where possible 
    275           re = %r{\w+[/\\]\.\.[/\\]} 
    276           path.gsub!(%r{\w+[/\\]\.\.[/\\]}, "") while path.match(re) 
     275          re = %r{[^/\\]+[/\\]\.\.[/\\]} 
     276          path.gsub!(re, "") while path.match(re) 
    277277          path 
    278278        end 
  • trunk/actionpack/test/controller/routing_test.rb

    r8738 r9069  
    21712171 
    21722172  def test_normalize_unix_paths 
    2173     load_paths = %w(. config/../app/controllers config/../app//helpers script/../config/../vendor/rails/actionpack/lib vendor/rails/railties/builtin/rails_info app/models lib script/../config/../foo/bar/../../app/models
     2173    load_paths = %w(. config/../app/controllers config/../app//helpers script/../config/../vendor/rails/actionpack/lib vendor/rails/railties/builtin/rails_info app/models lib script/../config/../foo/bar/../../app/models .foo/../.bar foo.bar/../config
    21742174    paths = ActionController::Routing.normalize_paths(load_paths) 
    2175     assert_equal %w(vendor/rails/railties/builtin/rails_info vendor/rails/actionpack/lib app/controllers app/helpers app/models lib .), paths 
     2175    assert_equal %w(vendor/rails/railties/builtin/rails_info vendor/rails/actionpack/lib app/controllers app/helpers app/models config .bar lib .), paths 
    21762176  end 
    21772177 
    21782178  def test_normalize_windows_paths 
    2179     load_paths = %w(. config\\..\\app\\controllers config\\..\\app\\\\helpers script\\..\\config\\..\\vendor\\rails\\actionpack\\lib vendor\\rails\\railties\\builtin\\rails_info app\\models lib script\\..\\config\\..\\foo\\bar\\..\\..\\app\\models
     2179    load_paths = %w(. config\\..\\app\\controllers config\\..\\app\\\\helpers script\\..\\config\\..\\vendor\\rails\\actionpack\\lib vendor\\rails\\railties\\builtin\\rails_info app\\models lib script\\..\\config\\..\\foo\\bar\\..\\..\\app\\models .foo\\..\\.bar foo.bar\\..\\config
    21802180    paths = ActionController::Routing.normalize_paths(load_paths) 
    2181     assert_equal %w(vendor\\rails\\railties\\builtin\\rails_info vendor\\rails\\actionpack\\lib app\\controllers app\\helpers app\\models lib .), paths 
     2181    assert_equal %w(vendor\\rails\\railties\\builtin\\rails_info vendor\\rails\\actionpack\\lib app\\controllers app\\helpers app\\models config .bar lib .), paths 
    21822182  end 
    21832183