lib/bundler.rb in bundler-2.4.7 vs lib/bundler.rb in bundler-2.4.8

- old
+ new

@@ -37,12 +37,12 @@ environment_preserver = EnvironmentPreserver.from_env ORIGINAL_ENV = environment_preserver.restore environment_preserver.replace_with_backup SUDO_MUTEX = Thread::Mutex.new - SAFE_MARSHAL_CLASSES = [Symbol, TrueClass, String, Array, Hash].freeze - SAFE_MARSHAL_ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed.".freeze + SAFE_MARSHAL_CLASSES = [Symbol, TrueClass, String, Array, Hash, Gem::Version, Gem::Specification].freeze + SAFE_MARSHAL_ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed." SAFE_MARSHAL_PROC = proc do |object| object.tap do unless SAFE_MARSHAL_CLASSES.include?(object.class) raise TypeError, format(SAFE_MARSHAL_ERROR, object.class, SAFE_MARSHAL_CLASSES.join(", ")) end @@ -504,11 +504,11 @@ def which(executable) if File.file?(executable) && File.executable?(executable) executable elsif paths = ENV["PATH"] - quote = '"'.freeze + quote = '"' paths.split(File::PATH_SEPARATOR).find do |path| path = path[1..-2] if path.start_with?(quote) && path.end_with?(quote) executable_path = File.expand_path(executable, path) return executable_path if File.file?(executable_path) && File.executable?(executable_path) end @@ -523,16 +523,10 @@ def safe_load_marshal(data) load_marshal(data, :marshal_proc => SAFE_MARSHAL_PROC) end - def load_marshal(data, marshal_proc: nil) - Marshal.load(data, marshal_proc) - rescue TypeError => e - raise MarshalError, "#{e.class}: #{e.message}" - end - def load_gemspec(file, validate = false) @gemspec_cache ||= {} key = File.expand_path(file) @gemspec_cache[key] ||= load_gemspec_uncached(file, validate) # Protect against caching side-effected gemspecs by returning a @@ -616,9 +610,15 @@ Bundler::SelfManager.new end end private + + def load_marshal(data, marshal_proc: nil) + Marshal.load(data, marshal_proc) + rescue TypeError => e + raise MarshalError, "#{e.class}: #{e.message}" + end def eval_yaml_gemspec(path, contents) Kernel.require "psych" Gem::Specification.from_yaml(contents)