summaryrefslogtreecommitdiff
path: root/lib/rubygems/safe_yaml.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/safe_yaml.rb')
-rw-r--r--lib/rubygems/safe_yaml.rb40
1 files changed, 14 insertions, 26 deletions
diff --git a/lib/rubygems/safe_yaml.rb b/lib/rubygems/safe_yaml.rb
index 81f99ee26e..6a02a48230 100644
--- a/lib/rubygems/safe_yaml.rb
+++ b/lib/rubygems/safe_yaml.rb
@@ -1,5 +1,6 @@
-module Gem
+# frozen_string_literal: true
+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
@@ -24,34 +25,21 @@ module Gem
runtime
].freeze
- if ::Psych.respond_to? :safe_load
- def self.safe_load(input)
- if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1')
- ::Psych.safe_load(input, permitted_classes: PERMITTED_CLASSES, permitted_symbols: PERMITTED_SYMBOLS, aliases: true)
- else
- ::Psych.safe_load(input, PERMITTED_CLASSES, PERMITTED_SYMBOLS, true)
- end
- end
+ @aliases_enabled = true
+ def self.aliases_enabled=(value) # :nodoc:
+ @aliases_enabled = !!value
+ end
- def self.load(input)
- if Gem::Version.new(Psych::VERSION) >= Gem::Version.new('3.1.0.pre1')
- ::Psych.safe_load(input, permitted_classes: [::Symbol])
- else
- ::Psych.safe_load(input, [::Symbol])
- end
- end
- else
- unless Gem::Deprecate.skip
- warn "Psych safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0)."
- end
+ def self.aliases_enabled? # :nodoc:
+ @aliases_enabled
+ end
- def self.safe_load(input, *args)
- ::Psych.load input
- end
+ def self.safe_load(input)
+ ::Psych.safe_load(input, permitted_classes: PERMITTED_CLASSES, permitted_symbols: PERMITTED_SYMBOLS, aliases: @aliases_enabled)
+ end
- def self.load(input)
- ::Psych.load input
- end
+ def self.load(input)
+ ::Psych.safe_load(input, permitted_classes: [::Symbol])
end
end
end