Sha256: c0c99708fc28caa77abe14918af265b74a21c9346e3a571d66d1003e86f2d750
Contents?: true
Size: 1020 Bytes
Versions: 40
Compression:
Stored size: 1020 Bytes
Contents
require 'brakeman/checks/base_check' class Brakeman::CheckDivideByZero < Brakeman::BaseCheck Brakeman::Checks.add_optional self @description = "Warns on potential division by zero" def run_check tracker.find_call(:method => :"/").each do |result| check_division result end end def check_division result return unless original? result call = result[:call] denominator = call.first_arg if number? denominator and denominator.value == 0 numerator = call.target if number? numerator if numerator.value.is_a? Float return # 0.0 / 0 is NaN and 1.0 / 0 is Infinity else confidence = :medium end else confidence = :weak end warn :result => result, :warning_type => "Divide by Zero", :warning_code => :divide_by_zero, :message => "Potential division by zero", :confidence => confidence, :user_input => denominator, :cwe_id => [369] end end end
Version data entries
40 entries across 40 versions & 3 rubygems