tzinfo 1.2.9 → 1.2.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +2 -3
- data/CHANGES.md +10 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/lib/tzinfo/ruby_data_source.rb +1 -1
- data/lib/tzinfo/zoneinfo_data_source.rb +25 -10
- data/test/assets/payload.rb +1 -0
- data/test/tc_ruby_data_source.rb +7 -1
- data/test/tc_timezone.rb +1 -1
- data/test/tc_zoneinfo_data_source.rb +20 -1
- data/test/test_utils.rb +16 -0
- data/tzinfo.gemspec +1 -1
- data.tar.gz.sig +0 -0
- metadata +4 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e6364432a0aef34ccf3b6b1ecad65dd6f7f13843ac503cbcea1f693b74c96b46
|
4
|
+
data.tar.gz: 825fd6905101f51fa700dfa682490851952de8a692c03954d12f38944f8814c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ef4b1b6a189bbf011294210d2e0651f41bc82e1db8fe342c9f8dbcefd473e8b49b9affa67bc9a395a5831b376db8d37b5942cfade1dacf5485f23ce3d6f78a46
|
7
|
+
data.tar.gz: 2871fbd7aded391c88a74724138073675690710dfca6adbbbe610ec4395e8d6631fad93b22d684650d04d9affeed0ab64a1d7489f766eb9ab1996556329c6ddc
|
checksums.yaml.gz.sig
CHANGED
@@ -1,3 +1,2 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
A���f���X}�`o��n;>J�iHx�@?���po���CC
|
1
|
+
Y�1]Q�ti�t���mPo���ڊ -O��D�cu���[<��oͽc5�}�x`��[^�J?7��s����+��ȶ��M�v��ǐ��9�e���l9J��ۑ�3?e�V~�E����6E����Eb�)��xdTk�^�BdAC?�����=Jcr�%�����l�~��)�aPʃ\�=[ݪ��{l��fFBݦ��]�_����<v�S��0��7�z|�-�$���ؑ����^ڐ��(�ReaK�s�|�c��d
|
2
|
+
�K�W��
|
data/CHANGES.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
Version 1.2.10 - 19-Jul-2022
|
2
|
+
----------------------------
|
3
|
+
|
4
|
+
* Fixed a relative path traversal bug that could cause arbitrary files to be
|
5
|
+
loaded with require when used with RubyDataSource. Please refer to
|
6
|
+
https://github.com/tzinfo/tzinfo/security/advisories/GHSA-5cm2-9h8c-rvfx for
|
7
|
+
details. CVE-2022-31163.
|
8
|
+
* Ignore the SECURITY file from Arch Linux's tzdata package. #134.
|
9
|
+
|
10
|
+
|
1
11
|
Version 1.2.9 - 16-Dec-2020
|
2
12
|
---------------------------
|
3
13
|
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
TZInfo - Ruby Timezone Library
|
2
2
|
==============================
|
3
3
|
|
4
|
-
[![RubyGems](https://img.shields.io/gem/v/tzinfo)](https://rubygems.org/gems/tzinfo) [![
|
4
|
+
[![RubyGems](https://img.shields.io/gem/v/tzinfo?logo=rubygems&label=Gem)](https://rubygems.org/gems/tzinfo) [![Tests](https://github.com/tzinfo/tzinfo/workflows/Tests/badge.svg?branch=1.2&event=push)](https://github.com/tzinfo/tzinfo/actions?query=workflow%3ATests+branch%3A1.2+event%3Apush)
|
5
5
|
|
6
6
|
[TZInfo](https://tzinfo.github.io) provides daylight savings aware
|
7
7
|
transformations between times in different timezones.
|
@@ -38,7 +38,7 @@ module TZInfo
|
|
38
38
|
# Raises InvalidTimezoneIdentifier if the timezone is not found or the
|
39
39
|
# identifier is invalid.
|
40
40
|
def load_timezone_info(identifier)
|
41
|
-
raise InvalidTimezoneIdentifier, 'Invalid identifier' if identifier !~
|
41
|
+
raise InvalidTimezoneIdentifier, 'Invalid identifier' if identifier !~ /\A[A-Za-z0-9+\-_]+(\/[A-Za-z0-9+\-_]+)*\z/
|
42
42
|
|
43
43
|
identifier = identifier.gsub(/-/, '__m__').gsub(/\+/, '__p__')
|
44
44
|
|
@@ -87,6 +87,29 @@ module TZInfo
|
|
87
87
|
# The default value of ZoneinfoDataSource.alternate_iso3166_tab_search_path.
|
88
88
|
DEFAULT_ALTERNATE_ISO3166_TAB_SEARCH_PATH = ['/usr/share/misc/iso3166.tab', '/usr/share/misc/iso3166'].freeze
|
89
89
|
|
90
|
+
# File and directories in the top level zoneinfo directory that will be
|
91
|
+
# excluded from the list of available time zones:
|
92
|
+
#
|
93
|
+
# - +VERSION is included on Mac OS X.
|
94
|
+
# - leapseconds is a list of leap seconds.
|
95
|
+
# - localtime is the current local timezone (may be a link).
|
96
|
+
# - posix, posixrules and right are directories containing other versions
|
97
|
+
# of the zoneinfo files.
|
98
|
+
# - SECURITY is included in the Arch Linux tzdata package.
|
99
|
+
# - src is a directory containing the tzdata source included on Solaris.
|
100
|
+
# - timeconfig is a symlink included on Slackware.
|
101
|
+
EXCLUDED_FILENAMES = [
|
102
|
+
'+VERSION',
|
103
|
+
'leapseconds',
|
104
|
+
'localtime',
|
105
|
+
'posix',
|
106
|
+
'posixrules',
|
107
|
+
'right',
|
108
|
+
'SECURITY',
|
109
|
+
'src',
|
110
|
+
'timeconfig'
|
111
|
+
].freeze
|
112
|
+
|
90
113
|
# Paths to be checked to find the system zoneinfo directory.
|
91
114
|
@@search_path = DEFAULT_SEARCH_PATH.dup
|
92
115
|
|
@@ -352,16 +375,8 @@ module TZInfo
|
|
352
375
|
# identifiers.
|
353
376
|
def load_timezone_index
|
354
377
|
index = []
|
355
|
-
|
356
|
-
|
357
|
-
# +VERSION is included on Mac OS X.
|
358
|
-
# leapseconds is a list of leap seconds.
|
359
|
-
# localtime is the current local timezone (may be a link).
|
360
|
-
# posix, posixrules and right are directories containing other versions of the zoneinfo files.
|
361
|
-
# src is a directory containing the tzdata source included on Solaris.
|
362
|
-
# timeconfig is a symlink included on Slackware.
|
363
|
-
|
364
|
-
enum_timezones(nil, ['+VERSION', 'leapseconds', 'localtime', 'posix', 'posixrules', 'right', 'src', 'timeconfig']) do |identifier|
|
378
|
+
|
379
|
+
enum_timezones(nil, EXCLUDED_FILENAMES) do |identifier|
|
365
380
|
index << identifier
|
366
381
|
end
|
367
382
|
|
@@ -0,0 +1 @@
|
|
1
|
+
raise 'This should never be executed'
|
data/test/tc_ruby_data_source.rb
CHANGED
@@ -48,9 +48,15 @@ class TCRubyDataSource < Minitest::Test
|
|
48
48
|
|
49
49
|
def test_load_timezone_info_invalid
|
50
50
|
assert_raises(InvalidTimezoneIdentifier) do
|
51
|
-
@data_source.load_timezone_info('../
|
51
|
+
@data_source.load_timezone_info('../definitions/UTC')
|
52
52
|
end
|
53
53
|
end
|
54
|
+
|
55
|
+
def test_load_timezone_info_directory_traversal
|
56
|
+
test_data_depth = TZINFO_TEST_DATA_DIR.scan('/').size
|
57
|
+
payload_path = File.join(TESTS_DIR, 'assets', 'payload')
|
58
|
+
assert_raises(InvalidTimezoneIdentifier) { Timezone.get("foo\n#{'/..' * (test_data_depth + 4)}#{payload_path}") }
|
59
|
+
end
|
54
60
|
|
55
61
|
def test_load_timezone_info_nil
|
56
62
|
assert_raises(InvalidTimezoneIdentifier) do
|
data/test/tc_timezone.rb
CHANGED
@@ -213,7 +213,7 @@ class TCTimezone < Minitest::Test
|
|
213
213
|
end
|
214
214
|
|
215
215
|
def test_get_invalid
|
216
|
-
assert_raises(InvalidTimezoneIdentifier) { Timezone.get('../
|
216
|
+
assert_raises(InvalidTimezoneIdentifier) { Timezone.get('../definitions/UTC') }
|
217
217
|
end
|
218
218
|
|
219
219
|
def test_get_nil
|
@@ -374,7 +374,7 @@ class TCZoneinfoDataSource < Minitest::Test
|
|
374
374
|
|
375
375
|
def test_load_timezone_info_invalid
|
376
376
|
assert_raises(InvalidTimezoneIdentifier) do
|
377
|
-
@data_source.load_timezone_info('../
|
377
|
+
@data_source.load_timezone_info('../zoneinfo/Europe/London')
|
378
378
|
end
|
379
379
|
end
|
380
380
|
|
@@ -818,6 +818,25 @@ class TCZoneinfoDataSource < Minitest::Test
|
|
818
818
|
end
|
819
819
|
end
|
820
820
|
|
821
|
+
def test_timezone_identifiers_ignored_security_file
|
822
|
+
# The Arch linux tzdata package includes a file named SECURITY giving
|
823
|
+
# instructions for reporting security-related bugs.
|
824
|
+
|
825
|
+
Dir.mktmpdir('tzinfo_test') do |dir|
|
826
|
+
FileUtils.touch(File.join(dir, 'zone.tab'))
|
827
|
+
FileUtils.touch(File.join(dir, 'iso3166.tab'))
|
828
|
+
FileUtils.cp(File.join(@data_source.zoneinfo_dir, 'EST'), File.join(dir, 'EST'))
|
829
|
+
|
830
|
+
File.open(File.join(dir, 'SECURITY'), 'w') do |f|
|
831
|
+
f.binmode
|
832
|
+
f.write("Please report any sensitive security-related bugs...\n")
|
833
|
+
end
|
834
|
+
|
835
|
+
data_source = ZoneinfoDataSource.new(dir)
|
836
|
+
assert_equal(['EST'], data_source.timezone_identifiers)
|
837
|
+
end
|
838
|
+
end
|
839
|
+
|
821
840
|
def test_load_country_info
|
822
841
|
info = @data_source.load_country_info('GB')
|
823
842
|
assert_equal('GB', info.code)
|
data/test/test_utils.rb
CHANGED
@@ -153,6 +153,22 @@ module Kernel
|
|
153
153
|
|
154
154
|
actual_lines = process.readlines
|
155
155
|
actual_lines = actual_lines.collect {|l| l.chomp}
|
156
|
+
|
157
|
+
# Ignore warnings from JRuby 1.7 and 9.0 on modern versions of Java:
|
158
|
+
# https://github.com/tzinfo/tzinfo/runs/1664655982#step:8:1893
|
159
|
+
#
|
160
|
+
# Ignore untaint deprecation warnings from Bundler 1 on Ruby 3.0.
|
161
|
+
actual_lines = actual_lines.reject do |l|
|
162
|
+
l.start_with?('unsupported Java version') ||
|
163
|
+
l.start_with?('WARNING: An illegal reflective access operation has occurred') ||
|
164
|
+
l.start_with?('WARNING: Illegal reflective access by') ||
|
165
|
+
l.start_with?('WARNING: Please consider reporting this to the maintainers of') ||
|
166
|
+
l.start_with?('WARNING: All illegal access operations will be denied in a future release') ||
|
167
|
+
l.start_with?('WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations') ||
|
168
|
+
l.start_with?('io/console on JRuby shells out to stty for most operations') ||
|
169
|
+
l =~ /\/bundler-1\..*\/lib\/bundler\/.*\.rb:\d+: warning: (Object|Pathname)#untaint is deprecated and will be removed in Ruby 3\.2\.\z/
|
170
|
+
end
|
171
|
+
|
156
172
|
assert_equal(expected_lines, actual_lines)
|
157
173
|
end
|
158
174
|
end
|
data/tzinfo.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'tzinfo'
|
3
|
-
s.version = '1.2.
|
3
|
+
s.version = '1.2.10'
|
4
4
|
s.summary = 'Daylight savings aware timezone library'
|
5
5
|
s.description = 'TZInfo provides daylight savings aware transformations between times in different time zones.'
|
6
6
|
s.author = 'Philip Ross'
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tzinfo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Philip Ross
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
J3Zn/kSTjTekiaspyGbczC3PUaeJNxr+yCvR4sk71Xmk/GaKKGOHedJ1uj/LAXrA
|
30
30
|
MR0mpl7b8zCg0PFC1J73uw==
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2022-07-19 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: thread_safe
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- lib/tzinfo/zoneinfo_country_info.rb
|
93
93
|
- lib/tzinfo/zoneinfo_data_source.rb
|
94
94
|
- lib/tzinfo/zoneinfo_timezone_info.rb
|
95
|
+
- test/assets/payload.rb
|
95
96
|
- test/tc_annual_rules.rb
|
96
97
|
- test/tc_country.rb
|
97
98
|
- test/tc_country_index_definition.rb
|
@@ -190,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
191
|
- !ruby/object:Gem::Version
|
191
192
|
version: '0'
|
192
193
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
194
|
+
rubygems_version: 3.3.7
|
194
195
|
signing_key:
|
195
196
|
specification_version: 4
|
196
197
|
summary: Daylight savings aware timezone library
|
metadata.gz.sig
CHANGED
Binary file
|