summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorMartin Emde <martin.emde@gmail.com>2023-12-15 10:30:14 -0800
committergit <svn-admin@ruby-lang.org>2023-12-15 19:36:24 +0000
commitf933cde9390563160d8a12c901e7a408f523c457 (patch)
tree627a48491e3a53d71c00fd42d557324a69978851 /lib
parentd9b39093e2bac70f121e38f4354a6a58c1b245a3 (diff)
[rubygems/rubygems] Let the guards have some space to breathe
https://github.com/rubygems/rubygems/commit/73f1609715
Diffstat (limited to 'lib')
-rw-r--r--lib/bundler/checksum.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/bundler/checksum.rb b/lib/bundler/checksum.rb
index 25e3ca127d..60ba93417c 100644
--- a/lib/bundler/checksum.rb
+++ b/lib/bundler/checksum.rb
@@ -30,6 +30,7 @@ module Bundler
def from_api(digest, source_uri, algo = DEFAULT_ALGORITHM)
return if Bundler.settings[:disable_checksum_validation]
+
Checksum.new(algo, to_hexdigest(digest, algo), Source.new(:api, source_uri))
end
@@ -41,11 +42,13 @@ module Bundler
def to_hexdigest(digest, algo = DEFAULT_ALGORITHM)
return digest unless algo == DEFAULT_ALGORITHM
return digest if digest.match?(/\A[0-9a-f]{64}\z/i)
+
if digest.match?(%r{\A[-0-9a-z_+/]{43}={0,2}\z}i)
digest = digest.tr("-_", "+/") # fix urlsafe base64
- return digest.unpack1("m0").unpack1("H*")
+ digest.unpack1("m0").unpack1("H*")
+ else
+ raise ArgumentError, "#{digest.inspect} is not a valid SHA256 hex or base64 digest"
end
- raise ArgumentError, "#{digest.inspect} is not a valid SHA256 hex or base64 digest"
end
end
@@ -85,6 +88,7 @@ module Bundler
def merge!(other)
return nil unless match?(other)
+
@sources.concat(other.sources).uniq!
self
end
@@ -185,6 +189,7 @@ module Bundler
# that contain the same gem with different checksums.
def replace(spec, checksum)
return unless checksum
+
lock_name = spec.name_tuple.lock_name
@store_mutex.synchronize do
existing = fetch_checksum(lock_name, checksum.algo)
@@ -198,6 +203,7 @@ module Bundler
def register(spec, checksum)
return unless checksum
+
register_checksum(spec.name_tuple.lock_name, checksum)
end