This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module Bundler
|
||||
module SafeMarshal
|
||||
ALLOWED_CLASSES = [
|
||||
Array,
|
||||
FalseClass,
|
||||
Gem::Specification,
|
||||
Gem::Version,
|
||||
Hash,
|
||||
String,
|
||||
Symbol,
|
||||
Time,
|
||||
TrueClass,
|
||||
].freeze
|
||||
|
||||
ERROR = "Unexpected class %s present in marshaled data. Only %s are allowed."
|
||||
|
||||
PROC = proc do |object|
|
||||
object.tap do
|
||||
unless ALLOWED_CLASSES.include?(object.class)
|
||||
raise TypeError, format(ERROR, object.class, ALLOWED_CLASSES.join(", "))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.proc
|
||||
PROC
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user