rubygems-update 3.6.0 → 3.6.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +41 -0
- data/README.md +1 -1
- data/bundler/CHANGELOG.md +17 -0
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/definition.rb +31 -23
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1.ronn +1 -1
- data/bundler/lib/bundler/rubygems_ext.rb +11 -0
- data/bundler/lib/bundler/self_manager.rb +3 -2
- data/bundler/lib/bundler/vendor/securerandom/lib/securerandom.rb +7 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems/query_utils.rb +1 -1
- data/lib/rubygems/rdoc.rb +10 -1
- data/lib/rubygems/requirement.rb +4 -3
- data/lib/rubygems/safe_marshal/reader.rb +31 -14
- data/lib/rubygems/safe_marshal/visitors/to_ruby.rb +29 -16
- data/lib/rubygems/specification.rb +2 -10
- data/lib/rubygems/uninstaller.rb +0 -1
- data/lib/rubygems/vendor/securerandom/lib/securerandom.rb +7 -1
- data/lib/rubygems/vendor/timeout/lib/timeout.rb +5 -3
- data/lib/rubygems/version.rb +4 -1
- data/lib/rubygems.rb +2 -2
- data/rubygems-update.gemspec +1 -1
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7fc38a36a930a52e9fb812ac5bc206c9f58540bff63db2bee276d514d08ce5f
|
4
|
+
data.tar.gz: 8056fefbaf65da55c57da58c72c9f7bb6e59e5813e9963c3cbcb8239c7387206
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3c929cdfcbf4282ac045f1906f57d4d289de04834ce74eaec64664148aa2c2ef1813c9ce225432d88e31989c1d1e1d0456a4485babc9608dd2446b44c97eb837
|
7
|
+
data.tar.gz: 6945a43c3cda7831f926755d25ae0711a5cbe709b7de819f41b30ce6db3f4dca667106bb7b627a02146a2460d62359b5ba7d876e31e9213fad5440b3dcebb2fd
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,44 @@
|
|
1
|
+
# 3.6.2 / 2024-12-23
|
2
|
+
|
3
|
+
## Security:
|
4
|
+
|
5
|
+
* Fix Gem::SafeMarshal buffer overrun when given lengths larger than fit
|
6
|
+
into a byte. Pull request
|
7
|
+
[#8305](https://github.com/rubygems/rubygems/pull/8305) by segiddins
|
8
|
+
* Improve type checking in marshal_load methods. Pull request
|
9
|
+
[#8306](https://github.com/rubygems/rubygems/pull/8306) by segiddins
|
10
|
+
|
11
|
+
## Enhancements:
|
12
|
+
|
13
|
+
* Skip rdoc hooks and their tests on newer rdoc versions. Pull request
|
14
|
+
[#8340](https://github.com/rubygems/rubygems/pull/8340) by
|
15
|
+
deivid-rodriguez
|
16
|
+
* Installs bundler 2.6.2 as a default gem.
|
17
|
+
|
18
|
+
## Bug fixes:
|
19
|
+
|
20
|
+
* Fix serialized metadata including an empty `@original_platform`
|
21
|
+
attribute. Pull request
|
22
|
+
[#8355](https://github.com/rubygems/rubygems/pull/8355) by
|
23
|
+
deivid-rodriguez
|
24
|
+
|
25
|
+
# 3.6.1 / 2024-12-17
|
26
|
+
|
27
|
+
## Enhancements:
|
28
|
+
|
29
|
+
* Installs bundler 2.6.1 as a default gem.
|
30
|
+
|
31
|
+
## Bug fixes:
|
32
|
+
|
33
|
+
* Fix `gem info` tagging some non default gems as default. Pull request
|
34
|
+
[#8321](https://github.com/rubygems/rubygems/pull/8321) by
|
35
|
+
deivid-rodriguez
|
36
|
+
|
37
|
+
## Documentation:
|
38
|
+
|
39
|
+
* Fix broken links. Pull request
|
40
|
+
[#8327](https://github.com/rubygems/rubygems/pull/8327) by st0012
|
41
|
+
|
1
42
|
# 3.6.0 / 2024-12-16
|
2
43
|
|
3
44
|
## Security:
|
data/README.md
CHANGED
@@ -86,7 +86,7 @@ The release policy is somewhat similar to the release policy of Ruby itself:
|
|
86
86
|
## Documentation
|
87
87
|
|
88
88
|
RubyGems uses [rdoc](https://github.com/rdoc/rdoc) for documentation. A compiled set of the docs
|
89
|
-
can be viewed online at [
|
89
|
+
can be viewed online at [docs.ruby-lang.org](https://docs.ruby-lang.org/en/master/Gem.html).
|
90
90
|
|
91
91
|
RubyGems also provides a comprehensive set of guides which covers numerous topics such as
|
92
92
|
creating a new gem, security practices and other resources at https://guides.rubygems.org
|
data/bundler/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
# 2.6.2 (December 23, 2024)
|
2
|
+
|
3
|
+
## Bug fixes:
|
4
|
+
|
5
|
+
- Restart using `Process.argv0` only if `$PROGRAM_NAME` is not a script [#8343](https://github.com/rubygems/rubygems/pull/8343)
|
6
|
+
|
7
|
+
## Documentation:
|
8
|
+
|
9
|
+
- Fix typo in `bundle lock` man page synopsis (`--add-checkums` → `--add-checksums`) [#8350](https://github.com/rubygems/rubygems/pull/8350)
|
10
|
+
|
11
|
+
# 2.6.1 (December 17, 2024)
|
12
|
+
|
13
|
+
## Bug fixes:
|
14
|
+
|
15
|
+
- Fix missing `Gem::Uri.redact` on some Ruby 3.1 versions [#8337](https://github.com/rubygems/rubygems/pull/8337)
|
16
|
+
- Fix `bundle lock --add-checksums` when gems are already installed [#8326](https://github.com/rubygems/rubygems/pull/8326)
|
17
|
+
|
1
18
|
# 2.6.0 (December 16, 2024)
|
2
19
|
|
3
20
|
## Security:
|
@@ -4,8 +4,8 @@ module Bundler
|
|
4
4
|
# Represents metadata from when the Bundler gem was built.
|
5
5
|
module BuildMetadata
|
6
6
|
# begin ivars
|
7
|
-
@built_at = "2024-12-
|
8
|
-
@git_commit_sha = "
|
7
|
+
@built_at = "2024-12-23".freeze
|
8
|
+
@git_commit_sha = "90ebd47c740".freeze
|
9
9
|
@release = true
|
10
10
|
# end ivars
|
11
11
|
|
@@ -186,13 +186,13 @@ module Bundler
|
|
186
186
|
def setup_domain!(options = {})
|
187
187
|
prefer_local! if options[:"prefer-local"]
|
188
188
|
|
189
|
-
if options[:
|
190
|
-
Bundler.settings.set_command_option(:jobs, 1) if no_install_needed? # to avoid the overhead of Bundler::Worker
|
191
|
-
with_cache!
|
192
|
-
false
|
193
|
-
else
|
189
|
+
if options[:add_checksums] || (!options[:local] && install_needed?)
|
194
190
|
remotely!
|
195
191
|
true
|
192
|
+
else
|
193
|
+
Bundler.settings.set_command_option(:jobs, 1) unless install_needed? # to avoid the overhead of Bundler::Worker
|
194
|
+
with_cache!
|
195
|
+
false
|
196
196
|
end
|
197
197
|
end
|
198
198
|
|
@@ -513,26 +513,11 @@ module Bundler
|
|
513
513
|
end
|
514
514
|
|
515
515
|
def nothing_changed?
|
516
|
-
|
517
|
-
|
518
|
-
!@source_changes &&
|
519
|
-
!@dependency_changes &&
|
520
|
-
!@current_platform_missing &&
|
521
|
-
@new_platforms.empty? &&
|
522
|
-
!@path_changes &&
|
523
|
-
!@local_changes &&
|
524
|
-
!@missing_lockfile_dep &&
|
525
|
-
!@unlocking_bundler &&
|
526
|
-
!@locked_spec_with_missing_deps &&
|
527
|
-
!@locked_spec_with_invalid_deps
|
528
|
-
end
|
529
|
-
|
530
|
-
def no_install_needed?
|
531
|
-
no_resolve_needed? && !missing_specs?
|
516
|
+
!something_changed?
|
532
517
|
end
|
533
518
|
|
534
519
|
def no_resolve_needed?
|
535
|
-
!
|
520
|
+
!resolve_needed?
|
536
521
|
end
|
537
522
|
|
538
523
|
def unlocking?
|
@@ -544,13 +529,36 @@ module Bundler
|
|
544
529
|
def add_checksums
|
545
530
|
@locked_checksums = true
|
546
531
|
|
547
|
-
setup_domain!
|
532
|
+
setup_domain!(add_checksums: true)
|
548
533
|
|
549
534
|
specs # force materialization to real specifications, so that checksums are fetched
|
550
535
|
end
|
551
536
|
|
552
537
|
private
|
553
538
|
|
539
|
+
def install_needed?
|
540
|
+
resolve_needed? || missing_specs?
|
541
|
+
end
|
542
|
+
|
543
|
+
def something_changed?
|
544
|
+
return true unless lockfile_exists?
|
545
|
+
|
546
|
+
@source_changes ||
|
547
|
+
@dependency_changes ||
|
548
|
+
@current_platform_missing ||
|
549
|
+
@new_platforms.any? ||
|
550
|
+
@path_changes ||
|
551
|
+
@local_changes ||
|
552
|
+
@missing_lockfile_dep ||
|
553
|
+
@unlocking_bundler ||
|
554
|
+
@locked_spec_with_missing_deps ||
|
555
|
+
@locked_spec_with_invalid_deps
|
556
|
+
end
|
557
|
+
|
558
|
+
def resolve_needed?
|
559
|
+
unlocking? || something_changed?
|
560
|
+
end
|
561
|
+
|
554
562
|
def should_add_extra_platforms?
|
555
563
|
!lockfile_exists? && generic_local_platform_is_ruby? && !Bundler.settings[:force_ruby_platform]
|
556
564
|
end
|
@@ -4,7 +4,7 @@
|
|
4
4
|
.SH "NAME"
|
5
5
|
\fBbundle\-lock\fR \- Creates / Updates a lockfile without installing
|
6
6
|
.SH "SYNOPSIS"
|
7
|
-
\fBbundle lock\fR [\-\-update] [\-\-bundler[=BUNDLER]] [\-\-local] [\-\-print] [\-\-lockfile=PATH] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-add\-
|
7
|
+
\fBbundle lock\fR [\-\-update] [\-\-bundler[=BUNDLER]] [\-\-local] [\-\-print] [\-\-lockfile=PATH] [\-\-full\-index] [\-\-gemfile=GEMFILE] [\-\-add\-checksums] [\-\-add\-platform] [\-\-remove\-platform] [\-\-normalize\-platforms] [\-\-patch] [\-\-minor] [\-\-major] [\-\-pre] [\-\-strict] [\-\-conservative]
|
8
8
|
.SH "DESCRIPTION"
|
9
9
|
Lock the gems specified in Gemfile\.
|
10
10
|
.SH "OPTIONS"
|
@@ -455,4 +455,15 @@ module Gem
|
|
455
455
|
|
456
456
|
Package::TarReader::Entry.prepend(FixFullNameEncoding)
|
457
457
|
end
|
458
|
+
|
459
|
+
require "rubygems/uri"
|
460
|
+
|
461
|
+
# Can be removed once RubyGems 3.3.15 support is dropped
|
462
|
+
unless Gem::Uri.respond_to?(:redact)
|
463
|
+
class Uri
|
464
|
+
def self.redact(uri)
|
465
|
+
new(uri).redacted
|
466
|
+
end
|
467
|
+
end
|
468
|
+
end
|
458
469
|
end
|
@@ -84,8 +84,9 @@ module Bundler
|
|
84
84
|
require "shellwords"
|
85
85
|
cmd = [*Shellwords.shellsplit(bundler_spec_original_cmd), *ARGV]
|
86
86
|
else
|
87
|
-
|
88
|
-
cmd
|
87
|
+
argv0 = File.exist?($PROGRAM_NAME) ? $PROGRAM_NAME : Process.argv0
|
88
|
+
cmd = [argv0, *ARGV]
|
89
|
+
cmd.unshift(Gem.ruby) unless File.executable?(argv0)
|
89
90
|
end
|
90
91
|
|
91
92
|
Bundler.with_original_env do
|
@@ -41,7 +41,7 @@ require 'random/formatter'
|
|
41
41
|
module Bundler::SecureRandom
|
42
42
|
|
43
43
|
# The version
|
44
|
-
VERSION = "0.4.
|
44
|
+
VERSION = "0.4.1"
|
45
45
|
|
46
46
|
class << self
|
47
47
|
# Returns a random binary string containing +size+ bytes.
|
@@ -51,6 +51,12 @@ module Bundler::SecureRandom
|
|
51
51
|
return gen_random(n)
|
52
52
|
end
|
53
53
|
|
54
|
+
# Compatibility methods for Ruby 3.2, we can remove this after dropping to support Ruby 3.2
|
55
|
+
def alphanumeric(n = nil, chars: ALPHANUMERIC)
|
56
|
+
n = 16 if n.nil?
|
57
|
+
choose(chars, n)
|
58
|
+
end if RUBY_VERSION < '3.3'
|
59
|
+
|
54
60
|
private
|
55
61
|
|
56
62
|
# :stopdoc:
|
data/lib/rubygems/query_utils.rb
CHANGED
@@ -311,7 +311,7 @@ module Gem::QueryUtils
|
|
311
311
|
label = "Installed at"
|
312
312
|
specs.each do |s|
|
313
313
|
version = s.version.to_s
|
314
|
-
default = ", default"
|
314
|
+
default = s.default_gem? ? ", default" : ""
|
315
315
|
entry << "\n" << " #{label} (#{version}#{default}): #{s.base_dir}"
|
316
316
|
label = " " * label.length
|
317
317
|
end
|
data/lib/rubygems/rdoc.rb
CHANGED
@@ -6,8 +6,17 @@ begin
|
|
6
6
|
require "rdoc/rubygems_hook"
|
7
7
|
module Gem
|
8
8
|
RDoc = ::RDoc::RubygemsHook
|
9
|
+
|
10
|
+
##
|
11
|
+
# Returns whether RDoc defines its own install hooks through a RubyGems
|
12
|
+
# plugin. This and whatever is guarded by it can be removed once no
|
13
|
+
# supported Ruby ships with RDoc older than 6.9.0.
|
14
|
+
|
15
|
+
def self.rdoc_hooks_defined_via_plugin?
|
16
|
+
Gem::Version.new(::RDoc::VERSION) >= Gem::Version.new("6.9.0")
|
17
|
+
end
|
9
18
|
end
|
10
19
|
|
11
|
-
Gem.done_installing(&Gem::RDoc.method(:generation_hook))
|
20
|
+
Gem.done_installing(&Gem::RDoc.method(:generation_hook)) unless Gem.rdoc_hooks_defined_via_plugin?
|
12
21
|
rescue LoadError
|
13
22
|
end
|
data/lib/rubygems/requirement.rb
CHANGED
@@ -22,7 +22,7 @@ class Gem::Requirement
|
|
22
22
|
|
23
23
|
SOURCE_SET_REQUIREMENT = Struct.new(:for_lockfile).new "!" # :nodoc:
|
24
24
|
|
25
|
-
quoted = OPS.keys
|
25
|
+
quoted = Regexp.union(OPS.keys)
|
26
26
|
PATTERN_RAW = "\\s*(#{quoted})?\\s*(#{Gem::Version::VERSION_PATTERN})\\s*".freeze # :nodoc:
|
27
27
|
|
28
28
|
##
|
@@ -201,7 +201,8 @@ class Gem::Requirement
|
|
201
201
|
def marshal_load(array) # :nodoc:
|
202
202
|
@requirements = array[0]
|
203
203
|
|
204
|
-
raise TypeError, "wrong @requirements" unless Array === @requirements
|
204
|
+
raise TypeError, "wrong @requirements" unless Array === @requirements &&
|
205
|
+
@requirements.all? {|r| r.size == 2 && (r.first.is_a?(String) || r[0] = "=") && r.last.is_a?(Gem::Version) }
|
205
206
|
end
|
206
207
|
|
207
208
|
def yaml_initialize(tag, vals) # :nodoc:
|
@@ -238,7 +239,7 @@ class Gem::Requirement
|
|
238
239
|
def satisfied_by?(version)
|
239
240
|
raise ArgumentError, "Need a Gem::Version: #{version.inspect}" unless
|
240
241
|
Gem::Version === version
|
241
|
-
requirements.all? {|op, rv| OPS
|
242
|
+
requirements.all? {|op, rv| OPS.fetch(op).call version, rv }
|
242
243
|
end
|
243
244
|
|
244
245
|
alias_method :===, :satisfied_by?
|
@@ -20,6 +20,12 @@ module Gem
|
|
20
20
|
class EOFError < Error
|
21
21
|
end
|
22
22
|
|
23
|
+
class DataTooShortError < Error
|
24
|
+
end
|
25
|
+
|
26
|
+
class NegativeLengthError < Error
|
27
|
+
end
|
28
|
+
|
23
29
|
def initialize(io)
|
24
30
|
@io = io
|
25
31
|
end
|
@@ -27,7 +33,7 @@ module Gem
|
|
27
33
|
def read!
|
28
34
|
read_header
|
29
35
|
root = read_element
|
30
|
-
raise UnconsumedBytesError unless @io.eof?
|
36
|
+
raise UnconsumedBytesError, "expected EOF, got #{@io.read(10).inspect}... after top-level element #{root.class}" unless @io.eof?
|
31
37
|
root
|
32
38
|
end
|
33
39
|
|
@@ -41,8 +47,16 @@ module Gem
|
|
41
47
|
raise UnsupportedVersionError, "Unsupported marshal version #{v.bytes.map(&:ord).join(".")}, expected #{Marshal::MAJOR_VERSION}.#{Marshal::MINOR_VERSION}" unless v == MARSHAL_VERSION
|
42
48
|
end
|
43
49
|
|
50
|
+
def read_bytes(n)
|
51
|
+
raise NegativeLengthError if n < 0
|
52
|
+
str = @io.read(n)
|
53
|
+
raise EOFError, "expected #{n} bytes, got EOF" if str.nil?
|
54
|
+
raise DataTooShortError, "expected #{n} bytes, got #{str.inspect}" unless str.bytesize == n
|
55
|
+
str
|
56
|
+
end
|
57
|
+
|
44
58
|
def read_byte
|
45
|
-
@io.getbyte
|
59
|
+
@io.getbyte || raise(EOFError, "Unexpected EOF")
|
46
60
|
end
|
47
61
|
|
48
62
|
def read_integer
|
@@ -67,8 +81,6 @@ module Gem
|
|
67
81
|
read_byte | (read_byte << 8) | -0x10000
|
68
82
|
when 0xFF
|
69
83
|
read_byte | -0x100
|
70
|
-
when nil
|
71
|
-
raise EOFError, "Unexpected EOF"
|
72
84
|
else
|
73
85
|
signed = (b ^ 128) - 128
|
74
86
|
if b >= 128
|
@@ -107,8 +119,6 @@ module Gem
|
|
107
119
|
when 47 then read_regexp # ?/
|
108
120
|
when 83 then read_struct # ?S
|
109
121
|
when 67 then read_user_class # ?C
|
110
|
-
when nil
|
111
|
-
raise EOFError, "Unexpected EOF"
|
112
122
|
else
|
113
123
|
raise Error, "Unknown marshal type discriminator #{type.chr.inspect} (#{type})"
|
114
124
|
end
|
@@ -127,7 +137,7 @@ module Gem
|
|
127
137
|
Elements::Symbol.new(byte.chr)
|
128
138
|
end
|
129
139
|
else
|
130
|
-
name =
|
140
|
+
name = read_bytes(len)
|
131
141
|
Elements::Symbol.new(name)
|
132
142
|
end
|
133
143
|
end
|
@@ -138,7 +148,7 @@ module Gem
|
|
138
148
|
def read_string
|
139
149
|
length = read_integer
|
140
150
|
return EMPTY_STRING if length == 0
|
141
|
-
str =
|
151
|
+
str = read_bytes(length)
|
142
152
|
Elements::String.new(str)
|
143
153
|
end
|
144
154
|
|
@@ -152,7 +162,7 @@ module Gem
|
|
152
162
|
|
153
163
|
def read_user_defined
|
154
164
|
name = read_element
|
155
|
-
binary_string =
|
165
|
+
binary_string = read_bytes(read_integer)
|
156
166
|
Elements::UserDefined.new(name, binary_string)
|
157
167
|
end
|
158
168
|
|
@@ -162,6 +172,7 @@ module Gem
|
|
162
172
|
def read_array
|
163
173
|
length = read_integer
|
164
174
|
return EMPTY_ARRAY if length == 0
|
175
|
+
raise NegativeLengthError if length < 0
|
165
176
|
elements = Array.new(length) do
|
166
177
|
read_element
|
167
178
|
end
|
@@ -170,7 +181,9 @@ module Gem
|
|
170
181
|
|
171
182
|
def read_object_with_ivars
|
172
183
|
object = read_element
|
173
|
-
|
184
|
+
length = read_integer
|
185
|
+
raise NegativeLengthError if length < 0
|
186
|
+
ivars = Array.new(length) do
|
174
187
|
[read_element, read_element]
|
175
188
|
end
|
176
189
|
Elements::WithIvars.new(object, ivars)
|
@@ -239,7 +252,9 @@ module Gem
|
|
239
252
|
end
|
240
253
|
|
241
254
|
def read_hash_with_default_value
|
242
|
-
|
255
|
+
length = read_integer
|
256
|
+
raise NegativeLengthError if length < 0
|
257
|
+
pairs = Array.new(length) do
|
243
258
|
[read_element, read_element]
|
244
259
|
end
|
245
260
|
default = read_element
|
@@ -249,7 +264,9 @@ module Gem
|
|
249
264
|
def read_object
|
250
265
|
name = read_element
|
251
266
|
object = Elements::Object.new(name)
|
252
|
-
|
267
|
+
length = read_integer
|
268
|
+
raise NegativeLengthError if length < 0
|
269
|
+
ivars = Array.new(length) do
|
253
270
|
[read_element, read_element]
|
254
271
|
end
|
255
272
|
Elements::WithIvars.new(object, ivars)
|
@@ -260,13 +277,13 @@ module Gem
|
|
260
277
|
end
|
261
278
|
|
262
279
|
def read_float
|
263
|
-
string =
|
280
|
+
string = read_bytes(read_integer)
|
264
281
|
Elements::Float.new(string)
|
265
282
|
end
|
266
283
|
|
267
284
|
def read_bignum
|
268
285
|
sign = read_byte
|
269
|
-
data =
|
286
|
+
data = read_bytes(read_integer * 2)
|
270
287
|
Elements::Bignum.new(sign, data)
|
271
288
|
end
|
272
289
|
|
@@ -45,7 +45,7 @@ module Gem::SafeMarshal
|
|
45
45
|
idx = 0
|
46
46
|
# not idiomatic, but there's a huge number of IMEMOs allocated here, so we avoid the block
|
47
47
|
# because this is such a hot path when doing a bundle install with the full index
|
48
|
-
|
48
|
+
while idx < size
|
49
49
|
push_stack idx
|
50
50
|
array << visit(elements[idx])
|
51
51
|
idx += 1
|
@@ -98,16 +98,21 @@ module Gem::SafeMarshal
|
|
98
98
|
end
|
99
99
|
|
100
100
|
s = e.object.binary_string
|
101
|
+
# 122 is the largest integer that can be represented in marshal in a single byte
|
102
|
+
raise TimeTooLargeError.new("binary string too large", stack: formatted_stack) if s.bytesize > 122
|
101
103
|
|
102
104
|
marshal_string = "\x04\bIu:\tTime".b
|
103
|
-
marshal_string.concat(s.
|
105
|
+
marshal_string.concat(s.bytesize + 5)
|
104
106
|
marshal_string << s
|
107
|
+
# internal is limited to 5, so no overflow is possible
|
105
108
|
marshal_string.concat(internal.size + 5)
|
106
109
|
|
107
110
|
internal.each do |k, v|
|
111
|
+
k = k.name
|
112
|
+
# ivar name can't be too large because only known ivars are in the internal ivars list
|
108
113
|
marshal_string.concat(":")
|
109
|
-
marshal_string.concat(k.
|
110
|
-
marshal_string.concat(k
|
114
|
+
marshal_string.concat(k.bytesize + 5)
|
115
|
+
marshal_string.concat(k)
|
111
116
|
dumped = Marshal.dump(v)
|
112
117
|
dumped[0, 2] = ""
|
113
118
|
marshal_string.concat(dumped)
|
@@ -171,11 +176,11 @@ module Gem::SafeMarshal
|
|
171
176
|
end
|
172
177
|
|
173
178
|
def visit_Gem_SafeMarshal_Elements_ObjectLink(o)
|
174
|
-
@objects
|
179
|
+
@objects.fetch(o.offset)
|
175
180
|
end
|
176
181
|
|
177
182
|
def visit_Gem_SafeMarshal_Elements_SymbolLink(o)
|
178
|
-
@symbols
|
183
|
+
@symbols.fetch(o.offset)
|
179
184
|
end
|
180
185
|
|
181
186
|
def visit_Gem_SafeMarshal_Elements_UserDefined(o)
|
@@ -219,16 +224,18 @@ module Gem::SafeMarshal
|
|
219
224
|
end
|
220
225
|
|
221
226
|
def visit_Gem_SafeMarshal_Elements_Float(f)
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
227
|
+
register_object(
|
228
|
+
case f.string
|
229
|
+
when "inf"
|
230
|
+
::Float::INFINITY
|
231
|
+
when "-inf"
|
232
|
+
-::Float::INFINITY
|
233
|
+
when "nan"
|
234
|
+
::Float::NAN
|
235
|
+
else
|
236
|
+
f.string.to_f
|
237
|
+
end
|
238
|
+
)
|
232
239
|
end
|
233
240
|
|
234
241
|
def visit_Gem_SafeMarshal_Elements_Bignum(b)
|
@@ -374,6 +381,12 @@ module Gem::SafeMarshal
|
|
374
381
|
class Error < StandardError
|
375
382
|
end
|
376
383
|
|
384
|
+
class TimeTooLargeError < Error
|
385
|
+
def initialize(message, stack:)
|
386
|
+
super "#{message} @ #{stack.join "."}"
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
377
390
|
class UnpermittedSymbolError < Error
|
378
391
|
def initialize(symbol:, stack:)
|
379
392
|
@symbol = symbol
|
@@ -1817,16 +1817,8 @@ class Gem::Specification < Gem::BasicSpecification
|
|
1817
1817
|
def encode_with(coder) # :nodoc:
|
1818
1818
|
coder.add "name", @name
|
1819
1819
|
coder.add "version", @version
|
1820
|
-
platform
|
1821
|
-
|
1822
|
-
"ruby"
|
1823
|
-
when String then
|
1824
|
-
@new_platform
|
1825
|
-
else
|
1826
|
-
@new_platform.to_s
|
1827
|
-
end
|
1828
|
-
coder.add "platform", platform
|
1829
|
-
coder.add "original_platform", @original_platform.to_s if platform != @original_platform.to_s
|
1820
|
+
coder.add "platform", platform.to_s
|
1821
|
+
coder.add "original_platform", original_platform.to_s if platform.to_s != original_platform.to_s
|
1830
1822
|
|
1831
1823
|
attributes = @@attributes.map(&:to_s) - %w[name version platform]
|
1832
1824
|
attributes.each do |name|
|
data/lib/rubygems/uninstaller.rb
CHANGED
@@ -41,7 +41,7 @@ require 'random/formatter'
|
|
41
41
|
module Gem::SecureRandom
|
42
42
|
|
43
43
|
# The version
|
44
|
-
VERSION = "0.4.
|
44
|
+
VERSION = "0.4.1"
|
45
45
|
|
46
46
|
class << self
|
47
47
|
# Returns a random binary string containing +size+ bytes.
|
@@ -51,6 +51,12 @@ module Gem::SecureRandom
|
|
51
51
|
return gen_random(n)
|
52
52
|
end
|
53
53
|
|
54
|
+
# Compatibility methods for Ruby 3.2, we can remove this after dropping to support Ruby 3.2
|
55
|
+
def alphanumeric(n = nil, chars: ALPHANUMERIC)
|
56
|
+
n = 16 if n.nil?
|
57
|
+
choose(chars, n)
|
58
|
+
end if RUBY_VERSION < '3.3'
|
59
|
+
|
54
60
|
private
|
55
61
|
|
56
62
|
# :stopdoc:
|
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
module Gem::Timeout
|
22
22
|
# The version
|
23
|
-
VERSION = "0.4.
|
23
|
+
VERSION = "0.4.3"
|
24
24
|
|
25
25
|
# Internal error raised to when a timeout is triggered.
|
26
26
|
class ExitException < Exception
|
@@ -141,9 +141,10 @@ module Gem::Timeout
|
|
141
141
|
# Perform an operation in a block, raising an error if it takes longer than
|
142
142
|
# +sec+ seconds to complete.
|
143
143
|
#
|
144
|
-
# +sec+:: Number of seconds to wait for the block to terminate. Any number
|
145
|
-
# may be used, including Floats to specify fractional seconds. A
|
144
|
+
# +sec+:: Number of seconds to wait for the block to terminate. Any non-negative number
|
145
|
+
# or nil may be used, including Floats to specify fractional seconds. A
|
146
146
|
# value of 0 or +nil+ will execute the block without any timeout.
|
147
|
+
# Any negative number will raise an ArgumentError.
|
147
148
|
# +klass+:: Exception Class to raise if the block fails to terminate
|
148
149
|
# in +sec+ seconds. Omitting will use the default, Gem::Timeout::Error
|
149
150
|
# +message+:: Error message to raise with Exception Class.
|
@@ -165,6 +166,7 @@ module Gem::Timeout
|
|
165
166
|
# a module method, so you can call it directly as Gem::Timeout.timeout().
|
166
167
|
def timeout(sec, klass = nil, message = nil, &block) #:yield: +sec+
|
167
168
|
return yield(sec) if sec == nil or sec.zero?
|
169
|
+
raise ArgumentError, "Timeout sec must be a non-negative number" if 0 > sec
|
168
170
|
|
169
171
|
message ||= "execution expired"
|
170
172
|
|
data/lib/rubygems/version.rb
CHANGED
@@ -288,7 +288,10 @@ class Gem::Version
|
|
288
288
|
# 1.3.5 and earlier) compatibility.
|
289
289
|
|
290
290
|
def marshal_load(array)
|
291
|
-
|
291
|
+
string = array[0]
|
292
|
+
raise TypeError, "wrong version string" unless string.is_a?(String)
|
293
|
+
|
294
|
+
initialize string
|
292
295
|
end
|
293
296
|
|
294
297
|
def yaml_initialize(tag, map) # :nodoc:
|
data/lib/rubygems.rb
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
require "rbconfig"
|
10
10
|
|
11
11
|
module Gem
|
12
|
-
VERSION = "3.6.
|
12
|
+
VERSION = "3.6.2"
|
13
13
|
end
|
14
14
|
|
15
15
|
# Must be first since it unloads the prelude from 1.9.2
|
@@ -107,7 +107,7 @@ require_relative "rubygems/target_rbconfig"
|
|
107
107
|
#
|
108
108
|
# == License
|
109
109
|
#
|
110
|
-
# See {LICENSE.txt}[
|
110
|
+
# See {LICENSE.txt}[https://github.com/rubygems/rubygems/blob/master/LICENSE.txt] for permissions.
|
111
111
|
#
|
112
112
|
# Thanks!
|
113
113
|
#
|
data/rubygems-update.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "rubygems-update"
|
5
|
-
s.version = "3.6.
|
5
|
+
s.version = "3.6.2"
|
6
6
|
s.authors = ["Jim Weirich", "Chad Fowler", "Eric Hodel", "Luis Lavena", "Aaron Patterson", "Samuel Giddins", "André Arko", "Evan Phoenix", "Hiroshi SHIBATA"]
|
7
7
|
s.email = ["", "", "drbrain@segment7.net", "luislavena@gmail.com", "aaron@tenderlovemaking.com", "segiddins@segiddins.me", "andre@arko.net", "evan@phx.io", "hsbt@ruby-lang.org"]
|
8
8
|
|
metadata
CHANGED
@@ -1,9 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubygems-update
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.6.
|
4
|
+
version: 3.6.2
|
5
5
|
platform: ruby
|
6
|
-
original_platform: ''
|
7
6
|
authors:
|
8
7
|
- Jim Weirich
|
9
8
|
- Chad Fowler
|
@@ -16,7 +15,7 @@ authors:
|
|
16
15
|
- Hiroshi SHIBATA
|
17
16
|
bindir: exe
|
18
17
|
cert_chain: []
|
19
|
-
date: 2024-12-
|
18
|
+
date: 2024-12-23 00:00:00.000000000 Z
|
20
19
|
dependencies: []
|
21
20
|
description: |-
|
22
21
|
A package (also known as a library) contains a set of functionality
|
@@ -747,7 +746,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
747
746
|
- !ruby/object:Gem::Version
|
748
747
|
version: '0'
|
749
748
|
requirements: []
|
750
|
-
rubygems_version: 3.6.
|
749
|
+
rubygems_version: 3.6.2
|
751
750
|
specification_version: 4
|
752
751
|
summary: RubyGems is a package management framework for Ruby. This gem is downloaded
|
753
752
|
and installed by `gem update --system`, so that the `gem` CLI can update itself.
|