Sha256: a70989336e4b414b8ee09b0c3f25ab492750fe432c666be9b849e3cf5828cad5

Contents?: true

Size: 1.15 KB

Versions: 13

Compression:

Stored size: 1.15 KB

Contents

module Gem

  ###
  # This module is used for safely loading YAML specs from a gem.  The
  # `safe_load` method defined on this module is specifically designed for
  # loading Gem specifications.  For loading other YAML safely, please see
  # Psych.safe_load

  module SafeYAML
    WHITELISTED_CLASSES = %w(
      Symbol
      Time
      Date
      Gem::Dependency
      Gem::Platform
      Gem::Requirement
      Gem::Specification
      Gem::Version
      Gem::Version::Requirement
      YAML::Syck::DefaultKey
      Syck::DefaultKey
    )

    WHITELISTED_SYMBOLS = %w(
      development
      runtime
    )

    if ::YAML.respond_to? :safe_load
      def self.safe_load input
        ::YAML.safe_load(input, WHITELISTED_CLASSES, WHITELISTED_SYMBOLS, true)
      end

      def self.load input
        ::YAML.safe_load(input, [::Symbol])
      end
    else
      unless Gem::Deprecate.skip
        warn "YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)."
      end

      def self.safe_load input, *args
        ::YAML.load input
      end

      def self.load input
        ::YAML.load input
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
rubygems-update-2.7.11 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.10 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.9 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.8 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.7 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.6 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.5 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.4 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.4.pre1 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.3 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.2 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.1 lib/rubygems/safe_yaml.rb
rubygems-update-2.7.0 lib/rubygems/safe_yaml.rb