sinatra 0.9.0.4 → 0.9.0.5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of sinatra might be problematic. Click here for more details.

@@ -4,7 +4,7 @@ require 'rack'
4
4
  require 'rack/builder'
5
5
 
6
6
  module Sinatra
7
- VERSION = '0.9.0.4'
7
+ VERSION = '0.9.0.5'
8
8
 
9
9
  class Request < Rack::Request
10
10
  def user_agent
@@ -741,7 +741,9 @@ module Sinatra
741
741
  # static files route
742
742
  get(/.*[^\/]$/) do
743
743
  pass unless options.static? && options.public?
744
- path = options.public + unescape(request.path_info)
744
+ public_dir = File.expand_path(options.public)
745
+ path = File.expand_path(public_dir + unescape(request.path_info))
746
+ pass if path[0, public_dir.length] != public_dir
745
747
  pass unless File.file?(path)
746
748
  send_file path, :disposition => nil
747
749
  end
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'sinatra'
6
- s.version = '0.9.0.4'
7
- s.date = '2009-01-25'
6
+ s.version = '0.9.0.5'
7
+ s.date = '2009-03-09'
8
8
 
9
9
  s.description = "Classy web-development dressed in a DSL"
10
10
  s.summary = "Classy web-development dressed in a DSL"
@@ -64,4 +64,19 @@ describe 'Static' do
64
64
  get "/foobarbaz.txt"
65
65
  assert not_found?
66
66
  end
67
+
68
+ it 'serves files when .. path traverses within public directory' do
69
+ get "/data/../#{File.basename(__FILE__)}"
70
+ assert ok?
71
+ assert_equal File.read(__FILE__), body
72
+ end
73
+
74
+ it '404s when .. path traverses outside of public directory' do
75
+ mock_app {
76
+ set :static, true
77
+ set :public, File.dirname(__FILE__) + '/data'
78
+ }
79
+ get "/../#{File.basename(__FILE__)}"
80
+ assert not_found?
81
+ end
67
82
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0.4
4
+ version: 0.9.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-25 00:00:00 -08:00
12
+ date: 2009-03-09 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency