Sha256: b16e97c37e69d896e675ddb2295e74d60f65f74b9c888316fd87fa695fdc0a07

Contents?: true

Size: 800 Bytes

Versions: 5

Compression:

Stored size: 800 Bytes

Contents

require 'brakeman/checks/base_check'

#This check looks for calls to +eval+, +instance_eval+, etc. which include
#user input.
class Brakeman::CheckEvaluation < Brakeman::BaseCheck
  Brakeman::Checks.add self

  #Process calls
  def run_check
    debug_info "Finding eval-like calls"
    calls = tracker.find_call :method => [:eval, :instance_eval, :class_eval, :module_eval]

    debug_info "Processing eval-like calls"
    calls.each do |call|
      process_result call
    end
  end

  #Warns if result includes user input
  def process_result result
    if include_user_input? result[:call]
      warn :result => result,
        :warning_type => "Dangerous Eval",
        :message => "User input in eval",
        :code => result[:call],
        :confidence => CONFIDENCE[:high]
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
brakeman-1.2.0 lib/brakeman/checks/check_evaluation.rb
brakeman-1.1.0 lib/brakeman/checks/check_evaluation.rb
brakeman-1.1.pre lib/brakeman/checks/check_evaluation.rb
brakeman-1.0.0 lib/brakeman/checks/check_evaluation.rb
brakeman-1.0.rc1 lib/brakeman/checks/check_evaluation.rb