module Owasp module Esapi module Validator class FloatRule < BaseRule attr_accessor :min, :max def initialize(type,encoder=nil,min=nil,max=nil) super(type,encoder) @min = min @max = max @min = Float::MIN if min.nil? @max = Float::MAX if max.nil? end # Validate the input context as an integer def valid(context,input) if input.nil? if @allow_nil return nil end puts "::#{input}::" user = "#{context}: Input number required" log = "Input number required: context=#{context}, input=#{input}" raise Owasp::Esapi::ValidationException.new(user,log,context) end clean = @encoder.canonicalize(input) if @min > @max user = "#{context}: Invalid number input: context" log = "Validation parameter error for number: maxValue ( #{max}) must be greater than minValue ( #{min}) for #{context}" raise Owasp::Esapi::ValidationException.new(user,log,context) end begin user = "Invalid number input must be between #{min} and #{max}: context=#{context}" log = "Invalid number input must be between #{min} and #{max}: context=#{context}, input=#{input}" i = Float(clean) #check min if i < @min raise Owasp::Esapi::ValidationException.new(user,log,context) end # check max if i > @max raise Owasp::Esapi::ValidationException.new(user,log,context) end # check infinity if i.infinite? user = "#{context}: Invalid number input: context" log = "Invalid double input is infinite context=#{context} input=#{input}" raise Owasp::Esapi::ValidationException.new(user,log,context) end # checknan if i.nan? user = "#{context}: Invalid number input: context" log = "Invalid double input not a number context=#{context} input=#{input}" raise Owasp::Esapi::ValidationException.new(user,log,context) end return i rescue Exception => e user = "#{context}: Input number required" log = "Input number required: context=#{context}, input=#{input}" raise Owasp::Esapi::ValidationException.new(user,log,context) end end # This will call valid and return a 0 if its invalid def sanitize(context,input) result = 0 begin result= valid(context,input) rescue ValidationException => e end result end end end end end