{"record":{"id":"98d6f515a577bdbc","repo":"ruby/rubygems","slug":"malformed-gem-name-name-inspect","errorCode":null,"errorMessage":"malformed gem name: #{name.inspect}","messagePattern":"malformed gem name: #(.+?)","errorType":"exception","errorClass":"Gem::Exception","httpStatus":null,"severity":"error","filePath":"lib/rubygems/compact_index_client/cache.rb","lineNumber":84,"sourceCode":"        @special_characters_info_root.join(name)\n      else\n        @info_root.join(name)\n      end\n    end\n\n    def info_etag_path(name)\n      name = name.to_s\n      validate_name!(name)\n      @info_etag_root.join(\"#{name}-#{Digest::MD5.hexdigest(name).downcase}\")\n    end\n\n    # Gem names come from the remote index and are not otherwise\n    # validated, so refuse anything that would escape the cache\n    # directory when used as a path component.\n    def validate_name!(name)\n      return if File.basename(name) == name\n\n      raise Gem::Exception, \"malformed gem name: #{name.inspect}\"\n    end\n\n    def checksum_for_file(path)\n      return unless path.file?\n      Gem::CompactIndexClient.filesystem_access(path, :read) do\n        Digest::MD5.file(path).hexdigest\n      end\n    end\n\n    def mkdir(name)\n      directory.join(name).tap do |dir|\n        Gem::CompactIndexClient.filesystem_access(dir) do\n          FileUtils.mkdir_p(dir)\n        end\n      end\n    end\n\n    def fetch(remote_path, path, etag_path)","sourceCodeStart":66,"sourceCodeEnd":102,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/compact_index_client/cache.rb#L66-L102","documentation":"Error \"malformed gem name: #{name.inspect}\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/compact_index_client/cache.rb:84 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"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"}