class TaintedLove::Replacer::ReplaceYAML

Public Instance Methods

load(source, *args) click to toggle source
# File lib/tainted_love/replacer/replace_yaml.rb, line 14
def load(source, *args)
  TaintedLove.report(
    :ReplaceYAML,
    source,
    [:rce],
    'YAML.load using tainted input'
  ) if source.tainted?

  _tainted_love_original_load(source, *args)
end
replace!() click to toggle source
# File lib/tainted_love/replacer/replace_yaml.rb, line 10
def replace!
  YAML.instance_eval do
    alias :_tainted_love_original_load :load

    def load(source, *args)
      TaintedLove.report(
        :ReplaceYAML,
        source,
        [:rce],
        'YAML.load using tainted input'
      ) if source.tainted?

      _tainted_love_original_load(source, *args)
    end
  end
end
should_replace?() click to toggle source
# File lib/tainted_love/replacer/replace_yaml.rb, line 6
def should_replace?
  Object.const_defined?('YAML')
end