Sha256: 93403ea87f5204146e9ab1b65017604f189ebf6a6082a27e1427250f1af3de6f

Contents?: true

Size: 1.48 KB

Versions: 39

Compression:

Stored size: 1.48 KB

Contents

require 'rubygems'
require 'sexp_processor'
require 'set'

#Looks for request parameters. Not used currently.
class ParamsProcessor < SexpProcessor
  attr_reader :result

  def initialize
    super()
    self.strict = false
    self.auto_shift_type = false
    self.require_empty = false
    self.default_method = :process_default
    self.warn_on_default = false
    @result = []
    @matched = false
    @mark = false
    @watch_nodes = Set.new([:call, :iasgn, :lasgn, :gasgn, :cvasgn, :return, :attrasgn])
    @params = Sexp.new(:call, nil, :params, Sexp.new(:arglist))
  end

  def process_default exp
    if @watch_nodes.include?(exp.node_type) and not @mark
      @mark = true
      @matched = false
      process_these exp[1..-1]
      if @matched
        @result << exp
        @matched = false
      end
      @mark = false
    else
      process_these exp[1..-1]
    end

    exp
  end

  def process_these exp
    exp.each do |e|
      if sexp? e and not e.empty?
        process e
      end
    end
  end

  def process_call exp
    if @mark
      actually_process_call exp
    else
      @mark = true
      actually_process_call exp
      if @matched
        @result << exp
      end
      @mark = @matched = false
    end
      
    exp
  end 

  def actually_process_call exp
    process exp[1]
    process exp[3]
    if exp[1] == @params or exp == @params
      @matched = true
    end
  end

  #Don't really care about condition
  def process_if exp
    process_these exp[2..-1]
    exp
  end

end

Version data entries

39 entries across 39 versions & 2 rubygems

Version Path
brakeman-0.9.2 lib/processors/params_processor.rb
brakeman-0.9.1 lib/processors/params_processor.rb
brakeman-0.9.0 lib/processors/params_processor.rb
brakeman-0.8.4 lib/processors/params_processor.rb
brakeman-0.8.3 lib/processors/params_processor.rb
brakeman-0.8.2 lib/processors/params_processor.rb
brakeman-0.8.1 lib/processors/params_processor.rb
brakeman-0.8.0 lib/processors/params_processor.rb
brakeman-0.7.2 lib/processors/params_processor.rb
brakeman-0.7.1 lib/processors/params_processor.rb
brakeman-0.7.0 lib/processors/params_processor.rb
brakeman-0.6.1 lib/processors/params_processor.rb
brakeman-0.6.0 lib/processors/params_processor.rb
brakeman-min-0.5.2 lib/processors/params_processor.rb
brakeman-0.5.2 lib/processors/params_processor.rb
brakeman-min-0.5.1 lib/processors/params_processor.rb
brakeman-0.5.1 lib/processors/params_processor.rb
brakeman-min-0.5.0 lib/processors/params_processor.rb
brakeman-0.5.0 lib/processors/params_processor.rb
brakeman-0.4.1 lib/processors/params_processor.rb