brakeman 5.0.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (146) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES.md +46 -0
  3. data/README.md +10 -1
  4. data/bundle/load.rb +4 -3
  5. data/bundle/ruby/2.7.0/gems/parallel-1.20.1/MIT-LICENSE.txt +20 -0
  6. data/bundle/ruby/2.7.0/gems/parallel-1.20.1/lib/parallel.rb +523 -0
  7. data/bundle/ruby/2.7.0/gems/parallel-1.20.1/lib/parallel/processor_count.rb +42 -0
  8. data/bundle/ruby/2.7.0/gems/parallel-1.20.1/lib/parallel/version.rb +3 -0
  9. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/LICENSE.txt +0 -0
  10. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/NEWS.md +37 -0
  11. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/README.md +2 -14
  12. data/bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml.rb +3 -0
  13. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/attlistdecl.rb +0 -0
  14. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/attribute.rb +0 -0
  15. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/cdata.rb +0 -0
  16. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/child.rb +0 -0
  17. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/comment.rb +0 -0
  18. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/doctype.rb +55 -31
  19. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/document.rb +194 -34
  20. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/dtd/attlistdecl.rb +0 -0
  21. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/dtd/dtd.rb +0 -0
  22. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/dtd/elementdecl.rb +0 -0
  23. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/dtd/entitydecl.rb +0 -0
  24. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/dtd/notationdecl.rb +0 -0
  25. data/bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/element.rb +2599 -0
  26. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/encoding.rb +0 -0
  27. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/entity.rb +0 -0
  28. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/formatters/default.rb +0 -0
  29. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/formatters/pretty.rb +0 -0
  30. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/formatters/transitive.rb +0 -0
  31. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/functions.rb +0 -0
  32. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/instruction.rb +0 -0
  33. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/light/node.rb +0 -8
  34. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/namespace.rb +0 -0
  35. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/node.rb +0 -0
  36. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/output.rb +0 -0
  37. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parent.rb +0 -0
  38. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parseexception.rb +0 -0
  39. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/baseparser.rb +139 -39
  40. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/lightparser.rb +0 -0
  41. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/pullparser.rb +0 -0
  42. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/sax2parser.rb +0 -0
  43. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/streamparser.rb +0 -0
  44. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/treeparser.rb +0 -0
  45. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/ultralightparser.rb +0 -0
  46. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/parsers/xpathparser.rb +25 -11
  47. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/quickpath.rb +0 -0
  48. data/bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/rexml.rb +37 -0
  49. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/sax2listener.rb +0 -0
  50. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/security.rb +0 -0
  51. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/source.rb +0 -0
  52. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/streamlistener.rb +0 -0
  53. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/text.rb +0 -0
  54. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/undefinednamespaceexception.rb +0 -0
  55. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/validation/relaxng.rb +0 -0
  56. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/validation/validation.rb +0 -0
  57. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/validation/validationexception.rb +0 -0
  58. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/xmldecl.rb +0 -0
  59. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/xmltokens.rb +0 -0
  60. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/xpath.rb +0 -0
  61. data/bundle/ruby/2.7.0/gems/{rexml-3.2.4 → rexml-3.2.5}/lib/rexml/xpath_parser.rb +36 -30
  62. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/History.rdoc +19 -0
  63. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/Manifest.txt +2 -0
  64. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/README.rdoc +0 -0
  65. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/compare/normalize.rb +2 -2
  66. data/bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/debugging.md +190 -0
  67. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/rp_extensions.rb +0 -0
  68. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/rp_stringscanner.rb +0 -0
  69. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby20_parser.rb +2550 -2537
  70. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby20_parser.y +9 -1
  71. data/bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby21_parser.rb +7148 -0
  72. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby21_parser.y +9 -1
  73. data/bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby22_parser.rb +7185 -0
  74. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby22_parser.y +9 -1
  75. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby23_parser.rb +2585 -2561
  76. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby23_parser.y +9 -1
  77. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby24_parser.rb +2622 -2607
  78. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby24_parser.y +9 -1
  79. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby25_parser.rb +2612 -2598
  80. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby25_parser.y +9 -1
  81. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby26_parser.rb +2610 -2594
  82. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby26_parser.y +10 -1
  83. data/bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby27_parser.rb +7358 -0
  84. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby27_parser.y +47 -1
  85. data/bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby30_parser.rb +7358 -0
  86. data/bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby30_parser.y +2703 -0
  87. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby_lexer.rb +19 -0
  88. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby_lexer.rex +1 -1
  89. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby_lexer.rex.rb +1 -1
  90. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby_parser.rb +2 -0
  91. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby_parser.yy +57 -1
  92. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/lib/ruby_parser_extras.rb +2 -2
  93. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/tools/munge.rb +2 -2
  94. data/bundle/ruby/2.7.0/gems/{ruby_parser-3.15.1 → ruby_parser-3.16.0}/tools/ripper.rb +1 -1
  95. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/History.rdoc +6 -0
  96. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/Manifest.txt +0 -0
  97. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/README.rdoc +0 -0
  98. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/composite_sexp_processor.rb +0 -0
  99. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/pt_testcase.rb +2 -2
  100. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/sexp.rb +0 -0
  101. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/sexp_matcher.rb +0 -0
  102. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/sexp_processor.rb +1 -1
  103. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/strict_sexp.rb +0 -0
  104. data/bundle/ruby/2.7.0/gems/{sexp_processor-4.15.2 → sexp_processor-4.15.3}/lib/unique.rb +0 -0
  105. data/lib/brakeman.rb +23 -8
  106. data/lib/brakeman/checks/check_detailed_exceptions.rb +1 -1
  107. data/lib/brakeman/checks/check_evaluation.rb +1 -1
  108. data/lib/brakeman/checks/check_execute.rb +10 -0
  109. data/lib/brakeman/checks/check_mass_assignment.rb +4 -6
  110. data/lib/brakeman/checks/check_render.rb +15 -1
  111. data/lib/brakeman/checks/check_sanitize_methods.rb +2 -1
  112. data/lib/brakeman/checks/check_sql.rb +58 -8
  113. data/lib/brakeman/checks/check_verb_confusion.rb +1 -1
  114. data/lib/brakeman/commandline.rb +1 -1
  115. data/lib/brakeman/file_parser.rb +45 -15
  116. data/lib/brakeman/options.rb +7 -2
  117. data/lib/brakeman/parsers/template_parser.rb +24 -0
  118. data/lib/brakeman/processors/alias_processor.rb +105 -18
  119. data/lib/brakeman/processors/base_processor.rb +4 -4
  120. data/lib/brakeman/processors/controller_alias_processor.rb +6 -43
  121. data/lib/brakeman/processors/lib/call_conversion_helper.rb +10 -6
  122. data/lib/brakeman/processors/lib/rails4_config_processor.rb +2 -1
  123. data/lib/brakeman/processors/library_processor.rb +9 -0
  124. data/lib/brakeman/processors/model_processor.rb +31 -0
  125. data/lib/brakeman/report.rb +4 -1
  126. data/lib/brakeman/report/ignore/config.rb +4 -4
  127. data/lib/brakeman/report/ignore/interactive.rb +1 -1
  128. data/lib/brakeman/report/report_github.rb +31 -0
  129. data/lib/brakeman/report/report_sarif.rb +21 -2
  130. data/lib/brakeman/rescanner.rb +1 -1
  131. data/lib/brakeman/scanner.rb +4 -1
  132. data/lib/brakeman/tracker.rb +33 -4
  133. data/lib/brakeman/tracker/collection.rb +57 -7
  134. data/lib/brakeman/tracker/method_info.rb +70 -0
  135. data/lib/brakeman/util.rb +34 -18
  136. data/lib/brakeman/version.rb +1 -1
  137. data/lib/ruby_parser/bm_sexp.rb +14 -0
  138. metadata +104 -97
  139. data/bundle/ruby/2.7.0/gems/rexml-3.2.4/Gemfile +0 -6
  140. data/bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/element.rb +0 -1269
  141. data/bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/rexml.rb +0 -32
  142. data/bundle/ruby/2.7.0/gems/rexml-3.2.4/rexml.gemspec +0 -84
  143. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/debugging.md +0 -57
  144. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby21_parser.rb +0 -7140
  145. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby22_parser.rb +0 -7160
  146. data/bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby27_parser.rb +0 -7224
@@ -1,4 +1,5 @@
1
1
  require 'brakeman/util'
2
+ require 'brakeman/tracker/method_info'
2
3
 
3
4
  module Brakeman
4
5
  class Collection
@@ -13,6 +14,8 @@ module Brakeman
13
14
  @src = {}
14
15
  @includes = []
15
16
  @methods = { :public => {}, :private => {}, :protected => {} }
17
+ @class_methods = {}
18
+ @simple_methods = { :class => {}, instance: {} }
16
19
  @options = {}
17
20
  @tracker = tracker
18
21
 
@@ -22,7 +25,7 @@ module Brakeman
22
25
  def ancestor? parent, seen={}
23
26
  seen[self.name] = true
24
27
 
25
- if self.parent == parent or seen[self.parent]
28
+ if self.parent == parent or self.name == parent or seen[self.parent]
26
29
  true
27
30
  elsif parent_model = collection[self.parent]
28
31
  parent_model.ancestor? parent, seen
@@ -37,7 +40,7 @@ module Brakeman
37
40
  end
38
41
 
39
42
  def add_include class_name
40
- @includes << class_name
43
+ @includes << class_name unless ancestor?(class_name)
41
44
  end
42
45
 
43
46
  def add_option name, exp
@@ -46,11 +49,17 @@ module Brakeman
46
49
  end
47
50
 
48
51
  def add_method visibility, name, src, file_name
52
+ meth_info = Brakeman::MethodInfo.new(name, src, self, file_name)
53
+ add_simple_method_maybe meth_info
54
+
49
55
  if src.node_type == :defs
56
+ @class_methods[name] = meth_info
57
+
58
+ # TODO fix this weirdness
50
59
  name = :"#{src[1]}.#{name}"
51
60
  end
52
61
 
53
- @methods[visibility][name] = { :src => src, :file => file_name }
62
+ @methods[visibility][name] = meth_info
54
63
  end
55
64
 
56
65
  def each_method
@@ -61,16 +70,31 @@ module Brakeman
61
70
  end
62
71
  end
63
72
 
64
- def get_method name
65
- each_method do |n, info|
66
- if n == name
67
- return info
73
+ def get_method name, type = :instance
74
+ case type
75
+ when :class
76
+ get_class_method name
77
+ when :instance
78
+ get_instance_method name
79
+ else
80
+ raise "Unexpected method type: #{type.inspect}"
81
+ end
82
+ end
83
+
84
+ def get_instance_method name
85
+ @methods.each do |_vis, meths|
86
+ if meths[name]
87
+ return meths[name]
68
88
  end
69
89
  end
70
90
 
71
91
  nil
72
92
  end
73
93
 
94
+ def get_class_method name
95
+ @class_methods[name]
96
+ end
97
+
74
98
  def file
75
99
  @files.first
76
100
  end
@@ -90,5 +114,31 @@ module Brakeman
90
114
  def methods_public
91
115
  @methods[:public]
92
116
  end
117
+
118
+ def get_simple_method_return_value type, name
119
+ @simple_methods[type][name]
120
+ end
121
+
122
+ private
123
+
124
+ def add_simple_method_maybe meth_info
125
+ if meth_info.very_simple_method?
126
+ add_simple_method meth_info
127
+ end
128
+ end
129
+
130
+ def add_simple_method meth_info
131
+ name = meth_info.name
132
+ value = meth_info.return_value
133
+
134
+ case meth_info.src.node_type
135
+ when :defn
136
+ @simple_methods[:instance][name] = value
137
+ when :defs
138
+ @simple_methods[:class][name] = value
139
+ else
140
+ raise "Expected sexp type: #{src.node_type}"
141
+ end
142
+ end
93
143
  end
94
144
  end
@@ -0,0 +1,70 @@
1
+ require 'brakeman/util'
2
+
3
+ module Brakeman
4
+ class MethodInfo
5
+ include Brakeman::Util
6
+
7
+ attr_reader :name, :src, :owner, :file, :type
8
+
9
+ def initialize name, src, owner, file
10
+ @name = name
11
+ @src = src
12
+ @owner = owner
13
+ @file = file
14
+ @type = case src.node_type
15
+ when :defn
16
+ :instance
17
+ when :defs
18
+ :class
19
+ else
20
+ raise "Expected sexp type: #{src.node_type}"
21
+ end
22
+
23
+ @simple_method = nil
24
+ end
25
+
26
+ # To support legacy code that expected a Hash
27
+ def [] attr
28
+ self.send(attr)
29
+ end
30
+
31
+ def very_simple_method?
32
+ return @simple_method == :very unless @simple_method.nil?
33
+
34
+ # Very simple methods have one (simple) expression in the body and
35
+ # no arguments
36
+ if src.formal_args.length == 1 # no args
37
+ if src.method_length == 1 # Single expression in body
38
+ value = first_body # First expression in body
39
+
40
+ if simple_literal? value or
41
+ (array? value and all_literals? value) or
42
+ (hash? value and all_literals? value, :hash)
43
+
44
+ @return_value = value
45
+ @simple_method = :very
46
+ end
47
+ end
48
+ end
49
+
50
+ @simple_method ||= false
51
+ end
52
+
53
+ def return_value env = nil
54
+ if very_simple_method?
55
+ return @return_value
56
+ else
57
+ nil
58
+ end
59
+ end
60
+
61
+ def first_body
62
+ case @type
63
+ when :class
64
+ src[4]
65
+ when :instance
66
+ src[3]
67
+ end
68
+ end
69
+ end
70
+ end
data/lib/brakeman/util.rb CHANGED
@@ -50,7 +50,11 @@ module Brakeman::Util
50
50
 
51
51
  # stupid simple, used to delegate to ActiveSupport
52
52
  def pluralize word
53
- word + "s"
53
+ if word.end_with? 's'
54
+ word + 'es'
55
+ else
56
+ word + 's'
57
+ end
54
58
  end
55
59
 
56
60
  #Returns a class name as a Symbol.
@@ -142,6 +146,14 @@ module Brakeman::Util
142
146
  nil
143
147
  end
144
148
 
149
+ def hash_values hash
150
+ values = hash.each_sexp.each_slice(2).map do |_, value|
151
+ value
152
+ end
153
+
154
+ Sexp.new(:array).concat(values).line(hash.line)
155
+ end
156
+
145
157
  #These are never modified
146
158
  PARAMS_SEXP = Sexp.new(:params)
147
159
  SESSION_SEXP = Sexp.new(:session)
@@ -230,30 +242,22 @@ module Brakeman::Util
230
242
 
231
243
  #Check if _exp_ is a params hash
232
244
  def params? exp
233
- if exp.is_a? Sexp
234
- return true if exp.node_type == :params or ALL_PARAMETERS.include? exp
235
-
236
- if call? exp
237
- if params? exp[1]
238
- return true
239
- elsif exp[2] == :[]
240
- return params? exp[1]
241
- end
242
- end
243
- end
244
-
245
- false
245
+ recurse_check?(exp) { |child| child.node_type == :params or ALL_PARAMETERS.include? child }
246
246
  end
247
247
 
248
248
  def cookies? exp
249
+ recurse_check?(exp) { |child| child.node_type == :cookies or ALL_COOKIES.include? child }
250
+ end
251
+
252
+ def recurse_check? exp, &check
249
253
  if exp.is_a? Sexp
250
- return true if exp.node_type == :cookies or ALL_COOKIES.include? exp
254
+ return true if yield(exp)
251
255
 
252
256
  if call? exp
253
- if cookies? exp[1]
257
+ if recurse_check? exp[1], &check
254
258
  return true
255
259
  elsif exp[2] == :[]
256
- return cookies? exp[1]
260
+ return recurse_check? exp[1], &check
257
261
  end
258
262
  end
259
263
  end
@@ -293,12 +297,24 @@ module Brakeman::Util
293
297
  exp.is_a? Sexp and types.include? exp.node_type
294
298
  end
295
299
 
296
- LITERALS = [:lit, :false, :str, :true, :array, :hash]
300
+ SIMPLE_LITERALS = [:lit, :false, :str, :true]
301
+
302
+ def simple_literal? exp
303
+ exp.is_a? Sexp and SIMPLE_LITERALS.include? exp.node_type
304
+ end
305
+
306
+ LITERALS = [*SIMPLE_LITERALS, :array, :hash]
297
307
 
298
308
  def literal? exp
299
309
  exp.is_a? Sexp and LITERALS.include? exp.node_type
300
310
  end
301
311
 
312
+ def all_literals? exp, expected_type = :array
313
+ node_type? exp, expected_type and
314
+ exp.length > 1 and
315
+ exp.all? { |e| e.is_a? Symbol or node_type? e, :lit, :str }
316
+ end
317
+
302
318
  DIR_CONST = s(:const, :Dir)
303
319
 
304
320
  # Dir.glob(...).whatever
@@ -1,3 +1,3 @@
1
1
  module Brakeman
2
- Version = "5.0.0"
2
+ Version = "5.1.0"
3
3
  end
@@ -543,6 +543,20 @@ class Sexp
543
543
  self.body.unshift :rlist
544
544
  end
545
545
 
546
+ # Number of "statements" in a method.
547
+ # This is more effecient than `Sexp#body.length`
548
+ # because `Sexp#body` creates a new Sexp.
549
+ def method_length
550
+ expect :defn, :defs
551
+
552
+ case self.node_type
553
+ when :defn
554
+ self.length - 3
555
+ when :defs
556
+ self.length - 4
557
+ end
558
+ end
559
+
546
560
  def render_type
547
561
  expect :render
548
562
  self[1]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brakeman
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Collins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-27 00:00:00.000000000 Z
11
+ date: 2021-07-19 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Brakeman detects security vulnerabilities in Ruby on Rails applications
14
14
  via static analysis.
@@ -132,95 +132,100 @@ files:
132
132
  - bundle/ruby/2.7.0/gems/highline-2.0.3/lib/highline/terminal/unix_stty.rb
133
133
  - bundle/ruby/2.7.0/gems/highline-2.0.3/lib/highline/version.rb
134
134
  - bundle/ruby/2.7.0/gems/highline-2.0.3/lib/highline/wrapper.rb
135
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/Gemfile
136
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/LICENSE.txt
137
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/NEWS.md
138
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/README.md
139
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/attlistdecl.rb
140
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/attribute.rb
141
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/cdata.rb
142
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/child.rb
143
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/comment.rb
144
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/doctype.rb
145
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/document.rb
146
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/dtd/attlistdecl.rb
147
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/dtd/dtd.rb
148
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/dtd/elementdecl.rb
149
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/dtd/entitydecl.rb
150
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/dtd/notationdecl.rb
151
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/element.rb
152
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/encoding.rb
153
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/entity.rb
154
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/formatters/default.rb
155
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/formatters/pretty.rb
156
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/formatters/transitive.rb
157
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/functions.rb
158
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/instruction.rb
159
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/light/node.rb
160
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/namespace.rb
161
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/node.rb
162
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/output.rb
163
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parent.rb
164
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parseexception.rb
165
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/baseparser.rb
166
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/lightparser.rb
167
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/pullparser.rb
168
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/sax2parser.rb
169
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/streamparser.rb
170
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/treeparser.rb
171
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/ultralightparser.rb
172
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/parsers/xpathparser.rb
173
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/quickpath.rb
174
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/rexml.rb
175
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/sax2listener.rb
176
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/security.rb
177
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/source.rb
178
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/streamlistener.rb
179
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/text.rb
180
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/undefinednamespaceexception.rb
181
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/validation/relaxng.rb
182
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/validation/validation.rb
183
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/validation/validationexception.rb
184
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/xmldecl.rb
185
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/xmltokens.rb
186
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/xpath.rb
187
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/lib/rexml/xpath_parser.rb
188
- - bundle/ruby/2.7.0/gems/rexml-3.2.4/rexml.gemspec
135
+ - bundle/ruby/2.7.0/gems/parallel-1.20.1/MIT-LICENSE.txt
136
+ - bundle/ruby/2.7.0/gems/parallel-1.20.1/lib/parallel.rb
137
+ - bundle/ruby/2.7.0/gems/parallel-1.20.1/lib/parallel/processor_count.rb
138
+ - bundle/ruby/2.7.0/gems/parallel-1.20.1/lib/parallel/version.rb
139
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/LICENSE.txt
140
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/NEWS.md
141
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/README.md
142
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml.rb
143
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/attlistdecl.rb
144
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/attribute.rb
145
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/cdata.rb
146
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/child.rb
147
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/comment.rb
148
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/doctype.rb
149
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/document.rb
150
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/dtd/attlistdecl.rb
151
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/dtd/dtd.rb
152
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/dtd/elementdecl.rb
153
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/dtd/entitydecl.rb
154
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/dtd/notationdecl.rb
155
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/element.rb
156
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/encoding.rb
157
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/entity.rb
158
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/formatters/default.rb
159
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/formatters/pretty.rb
160
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/formatters/transitive.rb
161
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/functions.rb
162
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/instruction.rb
163
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/light/node.rb
164
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/namespace.rb
165
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/node.rb
166
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/output.rb
167
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parent.rb
168
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parseexception.rb
169
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/baseparser.rb
170
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/lightparser.rb
171
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/pullparser.rb
172
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/sax2parser.rb
173
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/streamparser.rb
174
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/treeparser.rb
175
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/ultralightparser.rb
176
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/parsers/xpathparser.rb
177
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/quickpath.rb
178
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/rexml.rb
179
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/sax2listener.rb
180
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/security.rb
181
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/source.rb
182
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/streamlistener.rb
183
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/text.rb
184
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/undefinednamespaceexception.rb
185
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/validation/relaxng.rb
186
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/validation/validation.rb
187
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/validation/validationexception.rb
188
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/xmldecl.rb
189
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/xmltokens.rb
190
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/xpath.rb
191
+ - bundle/ruby/2.7.0/gems/rexml-3.2.5/lib/rexml/xpath_parser.rb
189
192
  - bundle/ruby/2.7.0/gems/ruby2ruby-2.4.4/History.rdoc
190
193
  - bundle/ruby/2.7.0/gems/ruby2ruby-2.4.4/Manifest.txt
191
194
  - bundle/ruby/2.7.0/gems/ruby2ruby-2.4.4/README.rdoc
192
195
  - bundle/ruby/2.7.0/gems/ruby2ruby-2.4.4/lib/ruby2ruby.rb
193
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/History.rdoc
194
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/Manifest.txt
195
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/README.rdoc
196
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/compare/normalize.rb
197
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/debugging.md
198
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/rp_extensions.rb
199
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/rp_stringscanner.rb
200
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby20_parser.rb
201
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby20_parser.y
202
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby21_parser.rb
203
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby21_parser.y
204
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby22_parser.rb
205
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby22_parser.y
206
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby23_parser.rb
207
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby23_parser.y
208
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby24_parser.rb
209
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby24_parser.y
210
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby25_parser.rb
211
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby25_parser.y
212
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby26_parser.rb
213
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby26_parser.y
214
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby27_parser.rb
215
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby27_parser.y
216
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby_lexer.rb
217
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby_lexer.rex
218
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby_lexer.rex.rb
219
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby_parser.rb
220
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby_parser.yy
221
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/lib/ruby_parser_extras.rb
222
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/tools/munge.rb
223
- - bundle/ruby/2.7.0/gems/ruby_parser-3.15.1/tools/ripper.rb
196
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/History.rdoc
197
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/Manifest.txt
198
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/README.rdoc
199
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/compare/normalize.rb
200
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/debugging.md
201
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/rp_extensions.rb
202
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/rp_stringscanner.rb
203
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby20_parser.rb
204
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby20_parser.y
205
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby21_parser.rb
206
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby21_parser.y
207
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby22_parser.rb
208
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby22_parser.y
209
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby23_parser.rb
210
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby23_parser.y
211
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby24_parser.rb
212
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby24_parser.y
213
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby25_parser.rb
214
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby25_parser.y
215
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby26_parser.rb
216
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby26_parser.y
217
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby27_parser.rb
218
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby27_parser.y
219
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby30_parser.rb
220
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby30_parser.y
221
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby_lexer.rb
222
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby_lexer.rex
223
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby_lexer.rex.rb
224
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby_parser.rb
225
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby_parser.yy
226
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/lib/ruby_parser_extras.rb
227
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/tools/munge.rb
228
+ - bundle/ruby/2.7.0/gems/ruby_parser-3.16.0/tools/ripper.rb
224
229
  - bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/History.rdoc
225
230
  - bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/Manifest.txt
226
231
  - bundle/ruby/2.7.0/gems/ruby_parser-legacy-1.0.0/README.rdoc
@@ -265,16 +270,16 @@ files:
265
270
  - bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/lib/safe_yaml/version.rb
266
271
  - bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/run_specs_all_ruby_versions.sh
267
272
  - bundle/ruby/2.7.0/gems/safe_yaml-1.0.5/safe_yaml.gemspec
268
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/History.rdoc
269
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/Manifest.txt
270
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/README.rdoc
271
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/composite_sexp_processor.rb
272
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/pt_testcase.rb
273
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/sexp.rb
274
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/sexp_matcher.rb
275
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/sexp_processor.rb
276
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/strict_sexp.rb
277
- - bundle/ruby/2.7.0/gems/sexp_processor-4.15.2/lib/unique.rb
273
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/History.rdoc
274
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/Manifest.txt
275
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/README.rdoc
276
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/composite_sexp_processor.rb
277
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/pt_testcase.rb
278
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/sexp.rb
279
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/sexp_matcher.rb
280
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/sexp_processor.rb
281
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/strict_sexp.rb
282
+ - bundle/ruby/2.7.0/gems/sexp_processor-4.15.3/lib/unique.rb
278
283
  - bundle/ruby/2.7.0/gems/slim-4.1.0/CHANGES
279
284
  - bundle/ruby/2.7.0/gems/slim-4.1.0/Gemfile
280
285
  - bundle/ruby/2.7.0/gems/slim-4.1.0/LICENSE
@@ -567,6 +572,7 @@ files:
567
572
  - lib/brakeman/report/report_base.rb
568
573
  - lib/brakeman/report/report_codeclimate.rb
569
574
  - lib/brakeman/report/report_csv.rb
575
+ - lib/brakeman/report/report_github.rb
570
576
  - lib/brakeman/report/report_hash.rb
571
577
  - lib/brakeman/report/report_html.rb
572
578
  - lib/brakeman/report/report_json.rb
@@ -596,6 +602,7 @@ files:
596
602
  - lib/brakeman/tracker/constants.rb
597
603
  - lib/brakeman/tracker/controller.rb
598
604
  - lib/brakeman/tracker/library.rb
605
+ - lib/brakeman/tracker/method_info.rb
599
606
  - lib/brakeman/tracker/model.rb
600
607
  - lib/brakeman/tracker/template.rb
601
608
  - lib/brakeman/util.rb