@@ -24,7 +24,11 @@ class YamlLoadError < Puppet::Error; end
24
24
# @raise [YamlLoadException] If deserialization fails.
25
25
# @return The parsed YAML, which can be Hash, Array or scalar types.
26
26
def self . safe_load ( yaml , allowed_classes = [ ] , filename = nil )
27
- data = YAML . safe_load ( yaml , allowed_classes , [ ] , true , filename )
27
+ if Gem ::Version . new ( Psych ::VERSION ) >= Gem ::Version . new ( '3.1.0' )
28
+ data = YAML . safe_load ( yaml , permitted_classes : allowed_classes , aliases : true , filename : filename )
29
+ else
30
+ data = YAML . safe_load ( yaml , allowed_classes , [ ] , true , filename )
31
+ end
28
32
data = false if data . nil?
29
33
data
30
34
rescue ::Psych ::DisallowedClass => detail
@@ -68,7 +72,11 @@ def self.load_file(filename, default_value = false, strip_classes = false)
68
72
end
69
73
data . to_ruby || default_value
70
74
else
71
- yaml = YAML . load_file ( filename )
75
+ if Gem ::Version . new ( Psych ::VERSION ) >= Gem ::Version . new ( '3.3.2' )
76
+ yaml = YAML . unsafe_load_file ( filename )
77
+ else
78
+ yaml = YAML . load_file ( filename )
79
+ end
72
80
yaml || default_value
73
81
end
74
82
rescue *YamlLoadExceptions => detail
0 commit comments