{"record":{"id":"b20cb6136909f831","repo":"ruby/rubygems","slug":"algorithm-checksum-mismatch-for-file-name","errorCode":null,"errorMessage":"#{algorithm} checksum mismatch for #{file_name}","messagePattern":"#(.+?) checksum mismatch for #(.+?)","errorType":"exception","errorClass":"Gem::Package::FormatError","httpStatus":null,"severity":"error","filePath":"lib/rubygems/package.rb","lineNumber":688,"sourceCode":"    return if real_dir == destination_dir ||\n              normalize_path(real_dir).start_with?(normalize_path(destination_dir + \"/\"))\n\n    raise Gem::Package::PathError.new(real_dir, destination_dir)\n  end\n\n  ##\n  # Verifies the +checksums+ against the +digests+.  This check is not\n  # cryptographically secure.  Missing checksums are ignored.\n\n  def verify_checksums(digests, checksums) # :nodoc:\n    return unless checksums\n\n    checksums.sort.each do |algorithm, gem_digests|\n      gem_digests.sort.each do |file_name, gem_hexdigest|\n        computed_digest = digests[algorithm][file_name]\n\n        unless computed_digest.hexdigest == gem_hexdigest\n          raise Gem::Package::FormatError.new \\\n            \"#{algorithm} checksum mismatch for #{file_name}\", @gem\n        end\n      end\n    end\n  end\n\n  ##\n  # Verifies +entry+ in a .gem file.\n\n  def verify_entry(entry)\n    file_name = entry.full_name\n    @files << file_name\n\n    case file_name\n    when /\\.sig$/ then\n      @signatures[$`] = limit_read(entry, file_name, 1024 * 1024) if @security_policy\n      return\n    else","sourceCodeStart":670,"sourceCodeEnd":706,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/package.rb#L670-L706","documentation":"Error \"#{algorithm} checksum mismatch for #{file_name}\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/package.rb:688 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Re-download the gem from the source; its checksum does not match","If the mirror is stale, switch sources or wait for it to sync"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"86cbb817a38ce8477b181c17467a703ded3f2be8","analyzedAt":"2026-08-23T06:27:48.159Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}