{"record":{"id":"d74ac9006d0bf102","repo":"ruby/rubygems","slug":"malformed-spec-name-spec-file-name-inspect","errorCode":null,"errorMessage":"malformed spec name: #{spec_file_name.inspect}","messagePattern":"malformed spec name: #(.+?)","errorType":"exception","errorClass":"Gem::Exception","httpStatus":null,"severity":"error","filePath":"lib/rubygems/source.rb","lineNumber":116,"sourceCode":"        File.stat(Gem.user_home).uid == Process.uid\n      rescue Errno::ENOENT\n        false\n      end\n  end\n\n  ##\n  # Fetches a specification for the given Gem::NameTuple.\n\n  def fetch_spec(name_tuple)\n    fetcher = Gem::RemoteFetcher.fetcher\n\n    spec_file_name = name_tuple.spec_name\n\n    # The name tuple comes from a remote index and is not otherwise\n    # validated, so refuse anything that would escape the spec cache\n    # directory when used as a path component.\n    if File.basename(spec_file_name) != spec_file_name\n      raise Gem::Exception, \"malformed spec name: #{spec_file_name.inspect}\"\n    end\n\n    source_uri = enforce_trailing_slash(uri) + \"#{Gem::MARSHAL_SPEC_DIR}#{spec_file_name}\"\n\n    cache_dir = cache_dir source_uri\n\n    local_spec = File.join cache_dir, spec_file_name\n\n    if File.exist? local_spec\n      spec = Gem.read_binary local_spec\n      Gem.load_safe_marshal\n      spec = begin\n               Gem::SafeMarshal.safe_load(spec)\n             rescue StandardError\n               nil\n             end\n      return spec if spec\n    end","sourceCodeStart":98,"sourceCodeEnd":134,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/source.rb#L98-L134","documentation":"Error \"malformed spec name: #{spec_file_name.inspect}\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/source.rb:116 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Rename the spec file to the '<name>-<version>.gemspec' format so it can be parsed"],"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"}