tzinfo 1.2.9 → 1.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
-
[](https://rubygems.org/gems/tzinfo) [](https://rubygems.org/gems/tzinfo) [](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
|