Skip to content

Commit 01bcca5

Browse files
committed
Merge branch 'fix-directory-traversal-0.3' into 0.3
2 parents 587af76 + cccfad8 commit 01bcca5

File tree

3 files changed

+8
-2
lines changed

3 files changed

+8
-2
lines changed

lib/tzinfo/timezone.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ def self.default_dst
101101
def self.get(identifier)
102102
instance = @@loaded_zones[identifier]
103103
unless instance
104-
raise InvalidTimezoneIdentifier, 'Invalid identifier' if identifier !~ /^[A-Za-z0-9\+\-_]+(\/[A-Za-z0-9\+\-_]+)*$/
104+
raise InvalidTimezoneIdentifier, 'Invalid identifier' if identifier !~ /\A[A-Za-z0-9+\-_]+(\/[A-Za-z0-9+\-_]+)*\z/
105105
identifier = identifier.gsub(/-/, '__m__').gsub(/\+/, '__p__')
106106
begin
107107
# Use a temporary variable to avoid an rdoc warning

test/in_load_path/payload.rb

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
raise 'This should never be executed'

test/tc_timezone.rb

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2+
$:.unshift File.join(File.dirname(__FILE__), "in_load_path")
23
require 'test/unit'
34
require File.join(File.dirname(__FILE__), 'test_utils')
45
require 'tzinfo'
@@ -97,7 +98,11 @@ def test_get_not_exist
9798
end
9899

99100
def test_get_invalid
100-
assert_raises(InvalidTimezoneIdentifier) { Timezone.get('../Definitions/UTC') }
101+
assert_raises(InvalidTimezoneIdentifier) { Timezone.get('../definitions/UTC') }
102+
end
103+
104+
def test_get_directory_traversal
105+
assert_raises(InvalidTimezoneIdentifier) { Timezone.get("foo\n/../../../payload") }
101106
end
102107

103108
def test_get_nil

0 commit comments

Comments
 (0)