Skip to content

Commit 36c675c

Browse files
authored
Merge pull request #7267 from rubygems/checksums-without-hash
Store Checksum::Store indexed by spec.lock_name
2 parents c09c923 + 34d6c6c commit 36c675c

File tree

2 files changed

+20
-20
lines changed

2 files changed

+20
-20
lines changed

bundler/lib/bundler/checksum.rb

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -165,8 +165,8 @@ def initialize
165165

166166
def initialize_copy(other)
167167
@store = {}
168-
other.store.each do |name_tuple, checksums|
169-
store[name_tuple] = checksums.dup
168+
other.store.each do |lock_name, checksums|
169+
store[lock_name] = checksums.dup
170170
end
171171
end
172172

@@ -175,7 +175,7 @@ def inspect
175175
end
176176

177177
def fetch(spec, algo = DEFAULT_ALGORITHM)
178-
store[spec.name_tuple]&.fetch(algo, nil)
178+
store[spec.name_tuple.lock_name]&.fetch(algo, nil)
179179
end
180180

181181
# Replace when the new checksum is from the same source.
@@ -191,53 +191,53 @@ def fetch(spec, algo = DEFAULT_ALGORITHM)
191191
def replace(spec, checksum)
192192
return unless checksum
193193

194-
name_tuple = spec.name_tuple
195-
checksums = (store[name_tuple] ||= {})
194+
lock_name = spec.name_tuple.lock_name
195+
checksums = (store[lock_name] ||= {})
196196
existing = checksums[checksum.algo]
197197

198198
# we assume only one source because this is used while building the index
199199
if !existing || existing.sources.first == checksum.sources.first
200200
checksums[checksum.algo] = checksum
201201
else
202-
register_checksum(name_tuple, checksum)
202+
register_checksum(lock_name, checksum)
203203
end
204204
end
205205

206206
def register(spec, checksum)
207207
return unless checksum
208-
register_checksum(spec.name_tuple, checksum)
208+
register_checksum(spec.name_tuple.lock_name, checksum)
209209
end
210210

211211
def merge!(other)
212-
other.store.each do |name_tuple, checksums|
212+
other.store.each do |lock_name, checksums|
213213
checksums.each do |_algo, checksum|
214-
register_checksum(name_tuple, checksum)
214+
register_checksum(lock_name, checksum)
215215
end
216216
end
217217
end
218218

219219
def to_lock(spec)
220-
name_tuple = spec.name_tuple
221-
if checksums = store[name_tuple]
222-
"#{name_tuple.lock_name} #{checksums.values.map(&:to_lock).sort.join(",")}"
220+
lock_name = spec.name_tuple.lock_name
221+
if checksums = store[lock_name]
222+
"#{lock_name} #{checksums.values.map(&:to_lock).sort.join(",")}"
223223
else
224-
name_tuple.lock_name
224+
lock_name
225225
end
226226
end
227227

228228
private
229229

230-
def register_checksum(name_tuple, checksum)
230+
def register_checksum(lock_name, checksum)
231231
return unless checksum
232-
checksums = (store[name_tuple] ||= {})
232+
checksums = (store[lock_name] ||= {})
233233
existing = checksums[checksum.algo]
234234

235235
if !existing
236236
checksums[checksum.algo] = checksum
237237
elsif existing.merge!(checksum)
238238
checksum
239239
else
240-
raise ChecksumMismatchError.new(name_tuple, existing, checksum)
240+
raise ChecksumMismatchError.new(lock_name, existing, checksum)
241241
end
242242
end
243243
end

bundler/lib/bundler/errors.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,18 +53,18 @@ class GemfileEvalError < GemfileError; end
5353
class MarshalError < StandardError; end
5454

5555
class ChecksumMismatchError < SecurityError
56-
def initialize(name_tuple, existing, checksum)
57-
@name_tuple = name_tuple
56+
def initialize(lock_name, existing, checksum)
57+
@lock_name = lock_name
5858
@existing = existing
5959
@checksum = checksum
6060
end
6161

6262
def message
6363
<<~MESSAGE
6464
Bundler found mismatched checksums. This is a potential security risk.
65-
#{@name_tuple.lock_name} #{@existing.to_lock}
65+
#{@lock_name} #{@existing.to_lock}
6666
from #{@existing.sources.join("\n and ")}
67-
#{@name_tuple.lock_name} #{@checksum.to_lock}
67+
#{@lock_name} #{@checksum.to_lock}
6868
from #{@checksum.sources.join("\n and ")}
6969
7070
#{mismatch_resolution_instructions}

0 commit comments

Comments
 (0)