brakeman 3.0.5 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +19 -0
  3. data/README.md +3 -13
  4. data/lib/brakeman.rb +3 -0
  5. data/lib/brakeman/checks/base_check.rb +19 -47
  6. data/lib/brakeman/checks/check_basic_auth.rb +3 -3
  7. data/lib/brakeman/checks/check_cross_site_scripting.rb +26 -12
  8. data/lib/brakeman/checks/check_default_routes.rb +1 -1
  9. data/lib/brakeman/checks/check_detailed_exceptions.rb +2 -2
  10. data/lib/brakeman/checks/check_evaluation.rb +3 -0
  11. data/lib/brakeman/checks/check_execute.rb +3 -3
  12. data/lib/brakeman/checks/check_file_disclosure.rb +2 -2
  13. data/lib/brakeman/checks/check_forgery_setting.rb +9 -12
  14. data/lib/brakeman/checks/check_header_dos.rb +1 -1
  15. data/lib/brakeman/checks/check_i18n_xss.rb +2 -2
  16. data/lib/brakeman/checks/check_jruby_xml.rb +1 -1
  17. data/lib/brakeman/checks/check_json_encoding.rb +1 -1
  18. data/lib/brakeman/checks/check_json_parsing.rb +3 -3
  19. data/lib/brakeman/checks/check_link_to.rb +1 -1
  20. data/lib/brakeman/checks/check_link_to_href.rb +9 -2
  21. data/lib/brakeman/checks/check_mass_assignment.rb +5 -2
  22. data/lib/brakeman/checks/check_model_attr_accessible.rb +4 -4
  23. data/lib/brakeman/checks/check_model_attributes.rb +7 -7
  24. data/lib/brakeman/checks/check_model_serialize.rb +6 -6
  25. data/lib/brakeman/checks/check_nested_attributes.rb +2 -2
  26. data/lib/brakeman/checks/check_number_to_currency.rb +2 -2
  27. data/lib/brakeman/checks/check_quote_table_name.rb +1 -1
  28. data/lib/brakeman/checks/check_redirect.rb +2 -10
  29. data/lib/brakeman/checks/check_render.rb +1 -1
  30. data/lib/brakeman/checks/check_render_dos.rb +1 -1
  31. data/lib/brakeman/checks/check_safe_buffer_manipulation.rb +1 -1
  32. data/lib/brakeman/checks/check_sanitize_methods.rb +1 -1
  33. data/lib/brakeman/checks/check_select_tag.rb +1 -1
  34. data/lib/brakeman/checks/check_select_vulnerability.rb +2 -2
  35. data/lib/brakeman/checks/check_session_settings.rb +1 -2
  36. data/lib/brakeman/checks/check_simple_format.rb +2 -2
  37. data/lib/brakeman/checks/check_single_quotes.rb +3 -3
  38. data/lib/brakeman/checks/check_skip_before_filter.rb +5 -7
  39. data/lib/brakeman/checks/check_sql.rb +10 -14
  40. data/lib/brakeman/checks/check_sql_cves.rb +4 -4
  41. data/lib/brakeman/checks/check_ssl_verify.rb +27 -9
  42. data/lib/brakeman/checks/check_strip_tags.rb +5 -5
  43. data/lib/brakeman/checks/check_symbol_dos_cve.rb +1 -1
  44. data/lib/brakeman/checks/check_translate_bug.rb +3 -4
  45. data/lib/brakeman/checks/check_unscoped_find.rb +1 -1
  46. data/lib/brakeman/checks/check_validation_regex.rb +2 -2
  47. data/lib/brakeman/checks/check_xml_dos.rb +1 -1
  48. data/lib/brakeman/checks/check_yaml_parsing.rb +1 -1
  49. data/lib/brakeman/file_parser.rb +1 -0
  50. data/lib/brakeman/parsers/template_parser.rb +6 -5
  51. data/lib/brakeman/processor.rb +7 -7
  52. data/lib/brakeman/processors/alias_processor.rb +30 -12
  53. data/lib/brakeman/processors/base_processor.rb +4 -8
  54. data/lib/brakeman/processors/controller_alias_processor.rb +33 -132
  55. data/lib/brakeman/processors/controller_processor.rb +29 -53
  56. data/lib/brakeman/processors/erb_template_processor.rb +4 -6
  57. data/lib/brakeman/processors/erubis_template_processor.rb +8 -11
  58. data/lib/brakeman/processors/gem_processor.rb +19 -35
  59. data/lib/brakeman/processors/haml_template_processor.rb +10 -12
  60. data/lib/brakeman/processors/lib/find_all_calls.rb +3 -5
  61. data/lib/brakeman/processors/lib/find_call.rb +2 -2
  62. data/lib/brakeman/processors/lib/find_return_value.rb +1 -1
  63. data/lib/brakeman/processors/lib/rails2_config_processor.rb +7 -8
  64. data/lib/brakeman/processors/lib/rails3_config_processor.rb +6 -7
  65. data/lib/brakeman/processors/lib/render_helper.rb +15 -14
  66. data/lib/brakeman/processors/lib/render_path.rb +11 -5
  67. data/lib/brakeman/processors/library_processor.rb +13 -35
  68. data/lib/brakeman/processors/model_processor.rb +22 -64
  69. data/lib/brakeman/processors/output_processor.rb +1 -37
  70. data/lib/brakeman/processors/slim_template_processor.rb +6 -8
  71. data/lib/brakeman/processors/template_alias_processor.rb +9 -9
  72. data/lib/brakeman/processors/template_processor.rb +5 -9
  73. data/lib/brakeman/report/report_base.rb +7 -7
  74. data/lib/brakeman/report/report_html.rb +5 -7
  75. data/lib/brakeman/report/report_markdown.rb +4 -6
  76. data/lib/brakeman/report/report_table.rb +4 -6
  77. data/lib/brakeman/rescanner.rb +29 -31
  78. data/lib/brakeman/scanner.rb +17 -8
  79. data/lib/brakeman/tracker.rb +24 -34
  80. data/lib/brakeman/tracker/collection.rb +77 -0
  81. data/lib/brakeman/tracker/config.rb +93 -0
  82. data/lib/brakeman/tracker/controller.rb +161 -0
  83. data/lib/brakeman/tracker/library.rb +17 -0
  84. data/lib/brakeman/tracker/model.rb +90 -0
  85. data/lib/brakeman/tracker/template.rb +33 -0
  86. data/lib/brakeman/util.rb +17 -9
  87. data/lib/brakeman/version.rb +1 -1
  88. data/lib/brakeman/warning.rb +8 -9
  89. data/lib/ruby_parser/bm_sexp.rb +16 -16
  90. data/lib/ruby_parser/bm_sexp_processor.rb +1 -120
  91. metadata +42 -31
  92. checksums.yaml.gz.sig +0 -1
  93. data.tar.gz.sig +0 -0
  94. metadata.gz.sig +0 -0
@@ -6,19 +6,25 @@ module Brakeman
6
6
  @path = []
7
7
  end
8
8
 
9
- def add_controller_render controller_name, method_name
9
+ def add_controller_render controller_name, method_name, line, file
10
10
  method_name ||= ""
11
11
 
12
12
  @path << { :type => :controller,
13
13
  :class => controller_name.to_sym,
14
- :method => method_name.to_sym }
14
+ :method => method_name.to_sym,
15
+ :line => line,
16
+ :file => file
17
+ }
15
18
 
16
19
  self
17
20
  end
18
21
 
19
- def add_template_render template_name
22
+ def add_template_render template_name, line, file
20
23
  @path << { :type => :template,
21
- :name => template_name.to_sym }
24
+ :name => template_name.to_sym,
25
+ :line => line,
26
+ :file => file
27
+ }
22
28
 
23
29
  self
24
30
  end
@@ -89,7 +95,7 @@ module Brakeman
89
95
  end
90
96
 
91
97
  def to_json *args
92
- MultiJson.dump(self.to_a)
98
+ MultiJson.dump(@path)
93
99
  end
94
100
 
95
101
  def initialize_copy original
@@ -1,5 +1,6 @@
1
1
  require 'brakeman/processors/base_processor'
2
2
  require 'brakeman/processors/alias_processor'
3
+ require 'brakeman/tracker/library'
3
4
 
4
5
  #Process generic library and stores it in Tracker.libs
5
6
  class Brakeman::LibraryProcessor < Brakeman::BaseProcessor
@@ -23,29 +24,18 @@ class Brakeman::LibraryProcessor < Brakeman::BaseProcessor
23
24
 
24
25
  if @current_class
25
26
  outer_class = @current_class
26
- name = (outer_class[:name].to_s + "::" + name.to_s).to_sym
27
+ name = (outer_class.name.to_s + "::" + name.to_s).to_sym
27
28
  end
28
29
 
29
30
  if @current_module
30
- name = (@current_module[:name].to_s + "::" + name.to_s).to_sym
31
+ name = (@current_module.name.to_s + "::" + name.to_s).to_sym
31
32
  end
32
33
 
33
34
  if @tracker.libs[name]
34
35
  @current_class = @tracker.libs[name]
35
- @current_class[:files] << @file_name unless @current_class[:files].include? @file_name
36
- @current_class[:src][@file_name] = exp
36
+ @current_class.add_file @file_name, exp
37
37
  else
38
- @current_class = {
39
- :name => name,
40
- :parent => parent,
41
- :includes => [],
42
- :public => {},
43
- :private => {},
44
- :protected => {},
45
- :src => { @file_name => exp },
46
- :files => [ @file_name ]
47
- }
48
-
38
+ @current_class = Brakeman::Library.new name, parent, @file_name, exp, @tracker
49
39
  @tracker.libs[name] = @current_class
50
40
  end
51
41
 
@@ -65,28 +55,18 @@ class Brakeman::LibraryProcessor < Brakeman::BaseProcessor
65
55
 
66
56
  if @current_module
67
57
  outer_module = @current_module
68
- name = (outer_module[:name].to_s + "::" + name.to_s).to_sym
58
+ name = (outer_module.name.to_s + "::" + name.to_s).to_sym
69
59
  end
70
60
 
71
61
  if @current_class
72
- name = (@current_class[:name].to_s + "::" + name.to_s).to_sym
62
+ name = (@current_class.name.to_s + "::" + name.to_s).to_sym
73
63
  end
74
64
 
75
65
  if @tracker.libs[name]
76
66
  @current_module = @tracker.libs[name]
77
- @current_module[:files] << @file_name unless @current_module[:files].include? @file_name
78
- @current_module[:src][@file_name] = exp
67
+ @current_module.add_file @file_name, exp
79
68
  else
80
- @current_module = {
81
- :name => name,
82
- :includes => [],
83
- :public => {},
84
- :private => {},
85
- :protected => {},
86
- :src => { @file_name => exp },
87
- :files => [ @file_name ]
88
- }
89
-
69
+ @current_module = Brakeman::Library.new name, nil, @file_name, exp, @tracker
90
70
  @tracker.libs[name] = @current_module
91
71
  end
92
72
 
@@ -103,14 +83,13 @@ class Brakeman::LibraryProcessor < Brakeman::BaseProcessor
103
83
 
104
84
  def process_defn exp
105
85
  exp = @alias_processor.process exp
106
- exp.node_type = :methdef
107
86
 
108
87
  if @current_class
109
88
  exp.body = process_all! exp.body
110
- @current_class[:public][exp.method_name] = { :src => exp, :file => @file_name }
89
+ @current_class.add_method :public, exp.method_name, exp, @file_name
111
90
  elsif @current_module
112
91
  exp.body = process_all! exp.body
113
- @current_module[:public][exp.method_name] = { :src => exp, :file => @file_name }
92
+ @current_module.add_method :public, exp.method_name, exp, @file_name
114
93
  end
115
94
 
116
95
  exp
@@ -118,14 +97,13 @@ class Brakeman::LibraryProcessor < Brakeman::BaseProcessor
118
97
 
119
98
  def process_defs exp
120
99
  exp = @alias_processor.process exp
121
- exp.node_type = :selfdef
122
100
 
123
101
  if @current_class
124
102
  exp.body = process_all! exp.body
125
- @current_class[:public][exp.method_name] = { :src => exp, :file => @file_name }
103
+ @current_class.add_method :public, exp.method_name, exp, @file_name
126
104
  elsif @current_module
127
105
  exp.body = process_all! exp.body
128
- @current_module[:public][exp.method_name] = { :src => exp, :file => @file_name }
106
+ @current_module.add_method :public, exp.method_name, exp, @file_name
129
107
  end
130
108
 
131
109
  exp
@@ -1,10 +1,9 @@
1
1
  require 'brakeman/processors/base_processor'
2
+ require 'brakeman/tracker/model'
2
3
 
3
4
  #Processes models. Puts results in tracker.models
4
5
  class Brakeman::ModelProcessor < Brakeman::BaseProcessor
5
6
 
6
- ASSOCIATIONS = Set[:belongs_to, :has_one, :has_many, :has_and_belongs_to_many]
7
-
8
7
  def initialize tracker
9
8
  super
10
9
  @current_class = nil
@@ -34,31 +33,18 @@ class Brakeman::ModelProcessor < Brakeman::BaseProcessor
34
33
 
35
34
  if @current_class
36
35
  outer_class = @current_class
37
- name = (outer_class[:name].to_s + "::" + name.to_s).to_sym
36
+ name = (outer_class.name.to_s + "::" + name.to_s).to_sym
38
37
  end
39
38
 
40
39
  if @current_module
41
- name = (@current_module[:name].to_s + "::" + name.to_s).to_sym
40
+ name = (@current_module.name.to_s + "::" + name.to_s).to_sym
42
41
  end
43
42
 
44
43
  if @tracker.models[name]
45
44
  @current_class = @tracker.models[name]
46
- @current_class[:files] << @file_name unless @current_class[:files].include? @file_name
47
- @current_class[:src][@file_name] = exp
45
+ @current_class.add_file @file_name, exp
48
46
  else
49
- @current_class = {
50
- :name => name,
51
- :parent => parent,
52
- :includes => [],
53
- :public => {},
54
- :private => {},
55
- :protected => {},
56
- :options => {},
57
- :src => { @file_name => exp },
58
- :associations => {},
59
- :files => [ @file_name ]
60
- }
61
-
47
+ @current_class = Brakeman::Model.new name, parent, @file_name, exp, @tracker
62
48
  @tracker.models[name] = @current_class
63
49
  end
64
50
 
@@ -78,30 +64,18 @@ class Brakeman::ModelProcessor < Brakeman::BaseProcessor
78
64
 
79
65
  if @current_module
80
66
  outer_module = @current_module
81
- name = (outer_module[:name].to_s + "::" + name.to_s).to_sym
67
+ name = (outer_module.name.to_s + "::" + name.to_s).to_sym
82
68
  end
83
69
 
84
70
  if @current_class
85
- name = (@current_class[:name].to_s + "::" + name.to_s).to_sym
71
+ name = (@current_class.name.to_s + "::" + name.to_s).to_sym
86
72
  end
87
73
 
88
74
  if @tracker.libs[name]
89
75
  @current_module = @tracker.libs[name]
90
- @current_module[:files] << @file_name unless @current_module[:files].include? @file_name
91
- @current_module[:src][@file_name] = exp
76
+ @current_module.add_file @file_name, exp
92
77
  else
93
- @current_module = {
94
- :name => name,
95
- :includes => [],
96
- :public => {},
97
- :private => {},
98
- :protected => {},
99
- :options => {},
100
- :src => { @file_name => exp },
101
- :associations => {},
102
- :files => [ @file_name ]
103
- }
104
-
78
+ @current_module = Brakeman::Model.new name, nil, @file_name, exp, @tracker
105
79
  @tracker.libs[name] = @current_module
106
80
  end
107
81
 
@@ -136,37 +110,21 @@ class Brakeman::ModelProcessor < Brakeman::BaseProcessor
136
110
  when :private, :protected, :public
137
111
  @visibility = method
138
112
  when :attr_accessible
139
- @current_class[:attr_accessible] ||= []
113
+ @current_class.set_attr_accessible
140
114
  else
141
115
  #??
142
116
  end
143
117
  else
144
118
  case method
145
119
  when :include
146
- @current_class[:includes] << class_name(first_arg) if @current_class
120
+ @current_class.add_include class_name(first_arg) if @current_class
147
121
  when :attr_accessible
148
- @current_class[:attr_accessible] ||= []
149
- args = []
150
-
151
- exp.each_arg do |e|
152
- if node_type? e, :lit
153
- args << e.value
154
- elsif hash? e
155
- @current_class[:options][:role_accessible] ||= []
156
- @current_class[:options][:role_accessible].concat args
157
- end
158
- end
159
-
160
- @current_class[:attr_accessible].concat args
122
+ @current_class.set_attr_accessible exp
123
+ when :attr_protected
124
+ @current_class.set_attr_protected exp
161
125
  else
162
126
  if @current_class
163
- if ASSOCIATIONS.include? method
164
- @current_class[:associations][method] ||= []
165
- @current_class[:associations][method].concat exp.args
166
- else
167
- @current_class[:options][method] ||= []
168
- @current_class[:options][method] << exp.arglist.line(exp.line)
169
- end
127
+ @current_class.add_option method, exp
170
128
  end
171
129
  end
172
130
  end
@@ -185,14 +143,14 @@ class Brakeman::ModelProcessor < Brakeman::BaseProcessor
185
143
  name = exp.method_name
186
144
 
187
145
  @current_method = name
188
- res = Sexp.new :methdef, name, exp.formal_args, *process_all!(exp.body)
146
+ res = Sexp.new :defn, name, exp.formal_args, *process_all!(exp.body)
189
147
  res.line(exp.line)
190
148
  @current_method = nil
191
149
 
192
150
  if @current_class
193
- @current_class[@visibility][name] = { :src => res, :file => @file_name }
151
+ @current_class.add_method @visibility, name, res, @file_name
194
152
  elsif @current_module
195
- @current_module[@visibility][name] = { :src => res, :file => @file_name }
153
+ @current_module.add_method @visibility, name, res, @file_name
196
154
  end
197
155
 
198
156
  res
@@ -205,7 +163,7 @@ class Brakeman::ModelProcessor < Brakeman::BaseProcessor
205
163
 
206
164
  if exp[1].node_type == :self
207
165
  if @current_class
208
- target = @current_class[:name]
166
+ target = @current_class.name
209
167
  elsif @current_module
210
168
  target = @current_module
211
169
  else
@@ -216,14 +174,14 @@ class Brakeman::ModelProcessor < Brakeman::BaseProcessor
216
174
  end
217
175
 
218
176
  @current_method = name
219
- res = Sexp.new :selfdef, target, name, exp.formal_args, *process_all!(exp.body)
177
+ res = Sexp.new :defs, target, name, exp.formal_args, *process_all!(exp.body)
220
178
  res.line(exp.line)
221
179
  @current_method = nil
222
180
 
223
181
  if @current_class
224
- @current_class[@visibility][name] = { :src => res, :file => @file_name }
182
+ @current_class.add_method @visibility, name, res, @file_name
225
183
  elsif @current_module
226
- @current_module[@visibility][name] = { :src => res, :file => @file_name }
184
+ @current_module.add_method @visibility, name, res, @file_name
227
185
  end
228
186
  res
229
187
  end
@@ -43,9 +43,6 @@ class Brakeman::OutputProcessor < Ruby2Ruby
43
43
  "cookies"
44
44
  end
45
45
 
46
- alias process_string_interp process_dstr
47
- alias process_string_eval process_evstr
48
-
49
46
  def process_rlist exp
50
47
  out = exp.map do |e|
51
48
  res = process e
@@ -80,9 +77,7 @@ class Brakeman::OutputProcessor < Ruby2Ruby
80
77
  return "def #{name}#{args}\n#{body}\nend".gsub(/\n\s*\n+/, "\n")
81
78
  end
82
79
 
83
- alias process_methdef process_defn
84
-
85
- def process_call_with_block exp
80
+ def process_iter exp
86
81
  call = process exp[0]
87
82
  block = process_rlist exp[2..-1]
88
83
  out = "#{call} do\n #{block}\n end"
@@ -173,35 +168,4 @@ class Brakeman::OutputProcessor < Ruby2Ruby
173
168
  exp.clear
174
169
  out
175
170
  end
176
-
177
- #This is copied from Ruby2Ruby, except the :string_eval type has been added
178
- def util_dthing(type, exp)
179
- s = []
180
-
181
- # first item in sexp is a string literal
182
- s << dthing_escape(type, exp.shift)
183
-
184
- until exp.empty?
185
- pt = exp.shift
186
- case pt
187
- when Sexp then
188
- case pt.first
189
- when :str then
190
- s << dthing_escape(type, pt.last)
191
- when :evstr, :string_eval then
192
- s << '#{' << process(pt) << '}' # do not use interpolation here
193
- else
194
- raise "unknown type: #{pt.inspect}"
195
- end
196
- when String then
197
- s << pt
198
- else
199
- # HACK: raise "huh?: #{pt.inspect}" -- hitting # constants in regexps
200
- # do nothing for now
201
- end
202
- end
203
-
204
- s.join
205
- end
206
-
207
171
  end
@@ -25,7 +25,7 @@ class Brakeman::SlimTemplateProcessor < Brakeman::TemplateProcessor
25
25
  ignore
26
26
  elsif render? arg
27
27
  make_output make_render_in_view arg
28
- elsif node_type? arg, :interp, :dstr
28
+ elsif string_interp? arg
29
29
  process_inside_interp arg
30
30
  elsif node_type? arg, :ignore
31
31
  ignore
@@ -38,24 +38,22 @@ class Brakeman::SlimTemplateProcessor < Brakeman::TemplateProcessor
38
38
  exp.arglist = process exp.arglist
39
39
  make_render_in_view exp
40
40
  else
41
- call = make_call target, method, process_all!(exp.args)
42
- call.original_line = exp.original_line
43
- call.line(exp.line)
44
- call
41
+ exp.arglist = process exp.arglist
42
+ exp
45
43
  end
46
44
  end
47
45
 
48
46
  def make_output exp
49
47
  s = Sexp.new :output, exp
50
48
  s.line(exp.line)
51
- @current_template[:outputs] << s
49
+ @current_template.add_output s
52
50
  s
53
51
  end
54
52
 
55
53
  def make_escaped_output exp
56
54
  s = Sexp.new :escaped_output, exp.first_arg
57
55
  s.line(exp.line)
58
- @current_template[:outputs] << s
56
+ @current_template.add_output s
59
57
  s
60
58
  end
61
59
 
@@ -63,7 +61,7 @@ class Brakeman::SlimTemplateProcessor < Brakeman::TemplateProcessor
63
61
  #Better to pull those values out directly.
64
62
  def process_inside_interp exp
65
63
  exp.map! do |e|
66
- if node_type? e, :evstr, :string_eval
64
+ if node_type? e, :evstr
67
65
  e.value = process_interp_output e.value
68
66
  e
69
67
  else
@@ -18,23 +18,25 @@ class Brakeman::TemplateAliasProcessor < Brakeman::AliasProcessor
18
18
  end
19
19
 
20
20
  #Process template
21
- def process_template name, args
21
+ def process_template name, args, _, line = nil
22
+ file = relative_path(@template.file || @tracker.templates[@template.name])
23
+
22
24
  if @called_from
23
25
  if @called_from.include_template? name
24
- Brakeman.debug "Skipping circular render from #{@template[:name]} to #{name}"
26
+ Brakeman.debug "Skipping circular render from #{@template.name} to #{name}"
25
27
  return
26
28
  end
27
29
 
28
- super name, args, @called_from.dup.add_template_render(@template[:name])
30
+ super name, args, @called_from.dup.add_template_render(@template.name, line, file)
29
31
  else
30
- super name, args, Brakeman::RenderPath.new.add_template_render(@template[:name])
32
+ super name, args, Brakeman::RenderPath.new.add_template_render(@template.name, line, file)
31
33
  end
32
34
  end
33
35
 
34
36
  #Determine template name
35
37
  def template_name name
36
- if !name.to_s.include?('/') && @template[:name].to_s.include?('/')
37
- name = "#{@template[:name].to_s.match(/^(.*\/).*$/)[1]}#{name}"
38
+ if !name.to_s.include?('/') && @template.name.to_s.include?('/')
39
+ name = "#{@template.name.to_s.match(/^(.*\/).*$/)[1]}#{name}"
38
40
  end
39
41
  name
40
42
  end
@@ -43,7 +45,7 @@ class Brakeman::TemplateAliasProcessor < Brakeman::AliasProcessor
43
45
  FORM_BUILDER_CALL = Sexp.new(:call, Sexp.new(:const, :FormBuilder), :new)
44
46
 
45
47
  #Looks for form methods and iterating over collections of Models
46
- def process_call_with_block exp
48
+ def process_iter exp
47
49
  process_default exp
48
50
 
49
51
  call = exp.block_call
@@ -77,8 +79,6 @@ class Brakeman::TemplateAliasProcessor < Brakeman::AliasProcessor
77
79
  exp
78
80
  end
79
81
 
80
- alias process_iter process_call_with_block
81
-
82
82
  #Checks if +exp+ is a call to Model.all or Model.find*
83
83
  def get_model_target exp
84
84
  if call? exp