brakeman 2.4.1 → 2.4.2

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa10d1e40ad21da6e7335bf11387cf68af65f9bf
4
+ data.tar.gz: 8a7d730a72e848072e145c779bc48054d1dbefce
5
+ SHA512:
6
+ metadata.gz: fdcb48dfaec2e78d0b4fea0a4fa0816ec2036c66c6fa89f3c0b1436f492249ee35851ead8ccaab4db5427360be2aaafc26a6508e951ce2572ddf0abd6ef45b93
7
+ data.tar.gz: 3ce802f6bcd0111c00ea4f6d3ad64213068b7cd09a1aa3f565413e68d535a4b47d87c69334d14aaf68183f197fe69c42a53afc03a3c4ead0e452f544925bb18b
data/CHANGES CHANGED
@@ -1,3 +1,12 @@
1
+ # 2.4.2
2
+
3
+ * Remove `rescue Exception`
4
+ * Fix duplicate warnings about sanitize CVE
5
+ * Reuse duplicate call location information
6
+ * Only track original template output locations
7
+ * Skip identically rendered templates
8
+ * Fix HAML template processing
9
+
1
10
  # 2.4.1
2
11
 
3
12
  * Add check for CVE-2014-0082
@@ -100,7 +100,7 @@ class Brakeman::Checks
100
100
 
101
101
  begin
102
102
  check.run_check
103
- rescue Exception => e
103
+ rescue => e
104
104
  tracker.error e
105
105
  end
106
106
 
@@ -138,7 +138,7 @@ class Brakeman::Checks
138
138
 
139
139
  begin
140
140
  check.run_check
141
- rescue Exception => e
141
+ rescue => e
142
142
  error_mutex.synchronize do
143
143
  tracker.error e
144
144
  end
@@ -35,6 +35,9 @@ class Brakeman::CheckSanitizeMethods < Brakeman::BaseCheck
35
35
 
36
36
  def check_for_cve method, code, link
37
37
  tracker.find_call(:target => false, :method => method).each do |result|
38
+ next if duplicate? result
39
+ add_result result
40
+
38
41
  message = "Rails #{tracker.config[:rails_version]} has a vulnerability in #{method}: upgrade to #{@fix_version} or patch"
39
42
 
40
43
  if include_user_input? result[:call]
@@ -58,7 +58,7 @@ class Brakeman::AliasProcessor < Brakeman::SexpProcessor
58
58
  e
59
59
  end
60
60
  end
61
- rescue Exception => err
61
+ rescue => err
62
62
  @tracker.error err if @tracker
63
63
  end
64
64
 
@@ -20,7 +20,7 @@ class Brakeman::ErbTemplateProcessor < Brakeman::TemplateProcessor
20
20
  @inside_concat = false
21
21
 
22
22
  if exp.second_arg
23
- raise Exception.new("Did not expect more than a single argument to _erbout.concat")
23
+ raise "Did not expect more than a single argument to _erbout.concat"
24
24
  end
25
25
 
26
26
  arg = exp.first_arg
@@ -3,6 +3,7 @@ require 'brakeman/processors/template_processor'
3
3
  #Processes HAML templates.
4
4
  class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
5
5
  HAML_FORMAT_METHOD = /format_script_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)_(true|false)/
6
+ HAML_HELPERS = s(:colon2, s(:const, :Haml), :Helpers)
6
7
 
7
8
  #Processes call, looking for template output
8
9
  def process_call exp
@@ -29,7 +30,7 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
29
30
  out = exp.first_arg = process(arg)
30
31
  @inside_concat = false
31
32
  else
32
- raise Exception.new("Empty _hamlout.#{method}()?")
33
+ raise "Empty _hamlout.#{method}()?"
33
34
  end
34
35
 
35
36
  if string? out
@@ -37,9 +38,7 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
37
38
  else
38
39
  case method.to_s
39
40
  when "push_text"
40
- s = Sexp.new(:output, out)
41
- @current_template[:outputs] << s
42
- s
41
+ build_output_from_push_text(out)
43
42
  when HAML_FORMAT_METHOD
44
43
  if $4 == "true"
45
44
  Sexp.new :format_escaped, out
@@ -47,7 +46,7 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
47
46
  Sexp.new :format, out
48
47
  end
49
48
  else
50
- raise Exception.new("Unrecognized action on _hamlout: #{method}")
49
+ raise "Unrecognized action on _hamlout: #{method}"
51
50
  end
52
51
  end
53
52
 
@@ -117,4 +116,52 @@ class Brakeman::HamlTemplateProcessor < Brakeman::TemplateProcessor
117
116
  exp.target.value == :_hamlout and
118
117
  exp.method == :buffer
119
118
  end
119
+
120
+ #HAML likes to put interpolated values into _hamlout.push_text
121
+ #but we want to handle those individually
122
+ def build_output_from_push_text exp
123
+ if node_type? exp, :string_interp, :dstr
124
+ exp.map! do |e|
125
+ if sexp? e
126
+ if node_type? e, :string_eval, :evstr
127
+ e = e.value
128
+ end
129
+
130
+ get_pushed_value e
131
+ else
132
+ e
133
+ end
134
+ end
135
+ end
136
+ end
137
+
138
+ #Gets outputs from values interpolated into _hamlout.push_text
139
+ def get_pushed_value exp
140
+ return exp unless sexp? exp
141
+
142
+ case exp.node_type
143
+ when :format
144
+ exp.node_type = :output
145
+ @current_template[:outputs] << exp
146
+ exp
147
+ when :format_escaped
148
+ exp.node_type = :escaped_output
149
+ @current_template[:outputs] << exp
150
+ exp
151
+ when :str, :ignore, :output, :escaped_output
152
+ exp
153
+ when :block, :rlist, :string_interp, :dstr
154
+ exp.map! { |e| get_pushed_value e }
155
+ else
156
+ if call? exp and exp.target == HAML_HELPERS and exp.method == :html_escape
157
+ s = Sexp.new(:escaped_output, exp.first_arg)
158
+ else
159
+ s = Sexp.new(:output, exp)
160
+ end
161
+
162
+ s.line(exp.line)
163
+ @current_template[:outputs] << s
164
+ s
165
+ end
166
+ end
120
167
  end
@@ -9,6 +9,7 @@ class Brakeman::FindAllCalls < Brakeman::BaseProcessor
9
9
  @current_method = nil
10
10
  @in_target = false
11
11
  @calls = []
12
+ @cache = {}
12
13
  end
13
14
 
14
15
  #Process the given source. Provide either class and method being searched
@@ -145,11 +146,18 @@ class Brakeman::FindAllCalls < Brakeman::BaseProcessor
145
146
 
146
147
  def make_location
147
148
  if @current_template
148
- { :type => :template,
149
+ key = [@current_template, @current_file]
150
+ cached = @cache[key]
151
+ return cached if cached
152
+
153
+ @cache[key] = { :type => :template,
149
154
  :template => @current_template,
150
155
  :file => @current_file }
151
156
  else
152
- { :type => :class,
157
+ key = [@current_class, @current_method, @current_file]
158
+ cached = @cache[key]
159
+ return cached if cached
160
+ @cache[key] = { :type => :class,
153
161
  :class => @current_class,
154
162
  :method => @current_method,
155
163
  :file => @current_file }
@@ -129,6 +129,14 @@ module Brakeman::RenderHelper
129
129
  #TODO: Add in :locals => { ... } to environment
130
130
  src = Brakeman::TemplateAliasProcessor.new(@tracker, template, called_from).process_safely(template[:src], template_env)
131
131
 
132
+ digest = Digest::SHA1.new.update(name + src.to_s).to_s.to_sym
133
+
134
+ if @tracker.template_cache.include? digest
135
+ return
136
+ else
137
+ @tracker.template_cache << digest
138
+ end
139
+
132
140
  #Run alias-processed src through the template processor to pull out
133
141
  #information and outputs.
134
142
  #This information will be stored in tracker.templates, but with a name
@@ -18,7 +18,7 @@ class Brakeman::OutputProcessor < Ruby2Ruby
18
18
  def process exp
19
19
  begin
20
20
  super exp if sexp? exp and not exp.empty?
21
- rescue Exception => e
21
+ rescue => e
22
22
  Brakeman.debug "While formatting #{exp}: #{e}\n#{e.backtrace.join("\n")}"
23
23
  end
24
24
  end
@@ -26,7 +26,7 @@ class Brakeman::TemplateProcessor < Brakeman::BaseProcessor
26
26
  def process exp
27
27
  begin
28
28
  super
29
- rescue Exception => e
29
+ rescue => e
30
30
  except = e.exception("Error when processing #{@current_template[:name]}: #{e.message}")
31
31
  except.set_backtrace(e.backtrace)
32
32
  raise except
@@ -48,7 +48,7 @@ class Brakeman::TemplateProcessor < Brakeman::BaseProcessor
48
48
  #Adds output to the list of outputs.
49
49
  def process_output exp
50
50
  exp.value = process exp.value
51
- @current_template[:outputs] << exp
51
+ @current_template[:outputs] << exp unless exp.original_line
52
52
  exp
53
53
  end
54
54
 
@@ -95,7 +95,7 @@ class Brakeman::Scanner
95
95
  @processor.process_config(parse_ruby(@app_tree.read(path)))
96
96
  end
97
97
 
98
- rescue Exception => e
98
+ rescue => e
99
99
  Brakeman.notify "[Notice] Error while processing #{path}"
100
100
  tracker.error e.exception(e.message + "\nwhile processing #{path}"), e.backtrace
101
101
  end
@@ -111,7 +111,7 @@ class Brakeman::Scanner
111
111
  @processor.process_gems(parse_ruby(@app_tree.read("Gemfile")))
112
112
  end
113
113
  end
114
- rescue Exception => e
114
+ rescue => e
115
115
  Brakeman.notify "[Notice] Error while processing Gemfile."
116
116
  tracker.error e.exception(e.message + "\nWhile processing Gemfile"), e.backtrace
117
117
  end
@@ -131,7 +131,7 @@ class Brakeman::Scanner
131
131
  @processor.process_initializer(path, parse_ruby(@app_tree.read_path(path)))
132
132
  rescue Racc::ParseError => e
133
133
  tracker.error e, "could not parse #{path}. There is probably a typo in the file. Test it with 'ruby_parse #{path}'"
134
- rescue Exception => e
134
+ rescue => e
135
135
  tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
136
136
  end
137
137
  end
@@ -162,7 +162,7 @@ class Brakeman::Scanner
162
162
  @processor.process_lib parse_ruby(@app_tree.read_path(path)), path
163
163
  rescue Racc::ParseError => e
164
164
  tracker.error e, "could not parse #{path}. There is probably a typo in the file. Test it with 'ruby_parse #{path}'"
165
- rescue Exception => e
165
+ rescue => e
166
166
  tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
167
167
  end
168
168
  end
@@ -174,7 +174,7 @@ class Brakeman::Scanner
174
174
  if @app_tree.exists?("config/routes.rb")
175
175
  begin
176
176
  @processor.process_routes parse_ruby(@app_tree.read("config/routes.rb"))
177
- rescue Exception => e
177
+ rescue => e
178
178
  tracker.error e.exception(e.message + "\nWhile processing routes.rb"), e.backtrace
179
179
  Brakeman.notify "[Notice] Error while processing routes - assuming all public controller methods are actions."
180
180
  options[:assume_all_routes] = true
@@ -219,7 +219,7 @@ class Brakeman::Scanner
219
219
  @processor.process_controller(parse_ruby(@app_tree.read_path(path)), path)
220
220
  rescue Racc::ParseError => e
221
221
  tracker.error e, "could not parse #{path}. There is probably a typo in the file. Test it with 'ruby_parse #{path}'"
222
- rescue Exception => e
222
+ rescue => e
223
223
  tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
224
224
  end
225
225
  end
@@ -305,7 +305,7 @@ class Brakeman::Scanner
305
305
  tracker.error e, "could not parse #{path}"
306
306
  rescue Haml::Error => e
307
307
  tracker.error e, ["While compiling HAML in #{path}"] << e.backtrace
308
- rescue Exception => e
308
+ rescue StandardError, LoadError => e
309
309
  tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
310
310
  end
311
311
  end
@@ -339,7 +339,7 @@ class Brakeman::Scanner
339
339
  @processor.process_model(parse_ruby(@app_tree.read_path(path)), path)
340
340
  rescue Racc::ParseError => e
341
341
  tracker.error e, "could not parse #{path}"
342
- rescue Exception => e
342
+ rescue => e
343
343
  tracker.error e.exception(e.message + "\nWhile processing #{path}"), e.backtrace
344
344
  end
345
345
  end
@@ -1,3 +1,3 @@
1
1
  module Brakeman
2
- Version = "2.4.1"
2
+ Version = "2.4.2"
3
3
  end
@@ -88,7 +88,7 @@ class Brakeman::SexpProcessor
88
88
  def error_handler(type, exp=nil) # :nodoc:
89
89
  begin
90
90
  return yield
91
- rescue StandardError => err
91
+ rescue => err
92
92
  warn "#{err.class} Exception thrown while processing #{type} for sexp #{exp.inspect} #{caller.inspect}" if $DEBUG
93
93
  raise
94
94
  end
metadata CHANGED
@@ -1,228 +1,186 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: brakeman
3
- version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
6
- segments:
7
- - 2
8
- - 4
9
- - 1
10
- version: 2.4.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.4.2
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Justin Collins
14
8
  autorequire:
15
9
  bindir: bin
16
- cert_chain:
17
- - |
18
- -----BEGIN CERTIFICATE-----
19
- MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQwwCgYDVQQDDANnZW0x
20
- GDAWBgoJkiaJk/IsZAEZFghicmFrZW1hbjETMBEGCgmSJomT8ixkARkWA29yZzAe
21
- Fw0xMzEyMTIwMDMxNTdaFw0xNDEyMTIwMDMxNTdaMD0xDDAKBgNVBAMMA2dlbTEY
22
- MBYGCgmSJomT8ixkARkWCGJyYWtlbWFuMRMwEQYKCZImiZPyLGQBGRYDb3JnMIIB
23
- IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCHmXCaAcZ4bVjijKoyQFx4N
24
- dyN7B7bqY8wOXy6f/UZ6mdC8IRAj82KaWQjNE2LT/ObFUWpCRyLdrwjkDjdFDyOT
25
- mZCZkiOeEy2ZxYGfxXMI/xg24c8r5Xmh16ErsYuprRcg+/KZ6s4UjseBNTARmBK4
26
- IHcqIdnoWbYa3BWHoflJPaJUIaU+/yTclzFQHpswU7ka8ftIAWeoDQo22gasP/4N
27
- HtJvAIyg1DcWPLcn0qbZmdehg8HZv8C+2MuLKX/2qZG9eseegMqMlHHabwwEy9Vv
28
- f/t/+ltLjC0CRa2TqZ2EuQ5EEzbOsqAftaZJFmwv9Ut1UhjmdvR5RfN6dWMQ5QID
29
- AQABozkwNzALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFPyEKeRy09i8qSr+9KFbeTqw
30
- kMCSMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQEFBQADggEBALEk8/Wnl2VAqchxWlbg
31
- RN0MkVUWMf8L0xxUiVKo5QeL4NBViALMBrU6IS4y6zyn+FoULAMEawUjZlZf4Hcg
32
- S9unev3p+RTWUyksAnA27wHZs/NRIkW34s1ZI5NNE/xyu4ULOQjfh1wOjlWzyHu9
33
- 0t41/CtpgNPM2uAjG3RIqlp7QKXlby50cQqWJQCgTH3JNjMhmROEhTsI6COoApvd
34
- Ce7Br39yjeoarvekq0wCXBYakUBw/DdZCG7mFZ6xgh01eqnZUsNd8vM+6V6v23Vu
35
- jk2tMjFT4L1dA3MEsz3+MP144PDhPCh7tPe6yy81BOvyYTVkKzrAkgKwHD1CuvsH
36
- bdw=
37
- -----END CERTIFICATE-----
38
-
39
- date: 2014-02-19 00:00:00 Z
40
- dependencies:
41
- - !ruby/object:Gem::Dependency
10
+ cert_chain:
11
+ - brakeman-public_cert.pem
12
+ date: 2014-03-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
42
15
  name: ruby_parser
43
- prerelease: false
44
- requirement: &id001 !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
47
- - - ~>
48
- - !ruby/object:Gem::Version
49
- hash: 23
50
- segments:
51
- - 3
52
- - 4
53
- - 0
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
54
20
  version: 3.4.0
55
21
  type: :runtime
56
- version_requirements: *id001
57
- - !ruby/object:Gem::Dependency
58
- name: ruby2ruby
59
22
  prerelease: false
60
- requirement: &id002 !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ~>
64
- - !ruby/object:Gem::Version
65
- hash: 5
66
- segments:
67
- - 2
68
- - 0
69
- - 5
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: 3.4.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: ruby2ruby
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
70
34
  version: 2.0.5
71
35
  type: :runtime
72
- version_requirements: *id002
73
- - !ruby/object:Gem::Dependency
74
- name: terminal-table
75
36
  prerelease: false
76
- requirement: &id003 !ruby/object:Gem::Requirement
77
- none: false
78
- requirements:
79
- - - ~>
80
- - !ruby/object:Gem::Version
81
- hash: 7
82
- segments:
83
- - 1
84
- - 4
85
- version: "1.4"
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 2.0.5
42
+ - !ruby/object:Gem::Dependency
43
+ name: terminal-table
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.4'
86
49
  type: :runtime
87
- version_requirements: *id003
88
- - !ruby/object:Gem::Dependency
89
- name: fastercsv
90
50
  prerelease: false
91
- requirement: &id004 !ruby/object:Gem::Requirement
92
- none: false
93
- requirements:
94
- - - ~>
95
- - !ruby/object:Gem::Version
96
- hash: 5
97
- segments:
98
- - 1
99
- - 5
100
- version: "1.5"
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.4'
56
+ - !ruby/object:Gem::Dependency
57
+ name: fastercsv
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '1.5'
101
63
  type: :runtime
102
- version_requirements: *id004
103
- - !ruby/object:Gem::Dependency
104
- name: highline
105
64
  prerelease: false
106
- requirement: &id005 !ruby/object:Gem::Requirement
107
- none: false
108
- requirements:
109
- - - ~>
110
- - !ruby/object:Gem::Version
111
- hash: 39
112
- segments:
113
- - 1
114
- - 6
115
- - 20
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '1.5'
70
+ - !ruby/object:Gem::Dependency
71
+ name: highline
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
116
76
  version: 1.6.20
117
77
  type: :runtime
118
- version_requirements: *id005
119
- - !ruby/object:Gem::Dependency
120
- name: erubis
121
78
  prerelease: false
122
- requirement: &id006 !ruby/object:Gem::Requirement
123
- none: false
124
- requirements:
125
- - - ~>
126
- - !ruby/object:Gem::Version
127
- hash: 15
128
- segments:
129
- - 2
130
- - 6
131
- version: "2.6"
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: 1.6.20
84
+ - !ruby/object:Gem::Dependency
85
+ name: erubis
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '2.6'
132
91
  type: :runtime
133
- version_requirements: *id006
134
- - !ruby/object:Gem::Dependency
135
- name: haml
136
92
  prerelease: false
137
- requirement: &id007 !ruby/object:Gem::Requirement
138
- none: false
139
- requirements:
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '2.6'
98
+ - !ruby/object:Gem::Dependency
99
+ name: haml
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
140
102
  - - ">="
141
- - !ruby/object:Gem::Version
142
- hash: 7
143
- segments:
144
- - 3
145
- - 0
146
- version: "3.0"
147
- - - <
148
- - !ruby/object:Gem::Version
149
- hash: 31
150
- segments:
151
- - 5
152
- - 0
153
- version: "5.0"
103
+ - !ruby/object:Gem::Version
104
+ version: '3.0'
105
+ - - "<"
106
+ - !ruby/object:Gem::Version
107
+ version: '5.0'
154
108
  type: :runtime
155
- version_requirements: *id007
156
- - !ruby/object:Gem::Dependency
157
- name: sass
158
109
  prerelease: false
159
- requirement: &id008 !ruby/object:Gem::Requirement
160
- none: false
161
- requirements:
162
- - - ~>
163
- - !ruby/object:Gem::Version
164
- hash: 7
165
- segments:
166
- - 3
167
- - 0
168
- version: "3.0"
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: '3.0'
115
+ - - "<"
116
+ - !ruby/object:Gem::Version
117
+ version: '5.0'
118
+ - !ruby/object:Gem::Dependency
119
+ name: sass
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '3.0'
169
125
  type: :runtime
170
- version_requirements: *id008
171
- - !ruby/object:Gem::Dependency
172
- name: slim
173
126
  prerelease: false
174
- requirement: &id009 !ruby/object:Gem::Requirement
175
- none: false
176
- requirements:
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ - !ruby/object:Gem::Dependency
133
+ name: slim
134
+ requirement: !ruby/object:Gem::Requirement
135
+ requirements:
177
136
  - - ">="
178
- - !ruby/object:Gem::Version
179
- hash: 23
180
- segments:
181
- - 1
182
- - 3
183
- - 6
137
+ - !ruby/object:Gem::Version
184
138
  version: 1.3.6
185
- - - <
186
- - !ruby/object:Gem::Version
187
- hash: 7
188
- segments:
189
- - 3
190
- - 0
191
- version: "3.0"
139
+ - - "<"
140
+ - !ruby/object:Gem::Version
141
+ version: '3.0'
192
142
  type: :runtime
193
- version_requirements: *id009
194
- - !ruby/object:Gem::Dependency
195
- name: multi_json
196
143
  prerelease: false
197
- requirement: &id010 !ruby/object:Gem::Requirement
198
- none: false
199
- requirements:
200
- - - ~>
201
- - !ruby/object:Gem::Version
202
- hash: 11
203
- segments:
204
- - 1
205
- - 2
206
- version: "1.2"
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: 1.3.6
149
+ - - "<"
150
+ - !ruby/object:Gem::Version
151
+ version: '3.0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: multi_json
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '1.2'
207
159
  type: :runtime
208
- version_requirements: *id010
209
- description: Brakeman detects security vulnerabilities in Ruby on Rails applications via static analysis.
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '1.2'
166
+ description: Brakeman detects security vulnerabilities in Ruby on Rails applications
167
+ via static analysis.
210
168
  email: gem@brakeman.org
211
- executables:
169
+ executables:
212
170
  - brakeman
213
171
  extensions: []
214
-
215
172
  extra_rdoc_files: []
216
-
217
- files:
218
- - bin/brakeman
173
+ files:
219
174
  - CHANGES
220
- - WARNING_TYPES
221
175
  - FEATURES
222
176
  - README.md
177
+ - WARNING_TYPES
178
+ - bin/brakeman
179
+ - lib/brakeman.rb
223
180
  - lib/brakeman/app_tree.rb
224
181
  - lib/brakeman/brakeman.rake
225
182
  - lib/brakeman/call_index.rb
183
+ - lib/brakeman/checks.rb
226
184
  - lib/brakeman/checks/base_check.rb
227
185
  - lib/brakeman/checks/check_basic_auth.rb
228
186
  - lib/brakeman/checks/check_content_tag.rb
@@ -274,7 +232,6 @@ files:
274
232
  - lib/brakeman/checks/check_validation_regex.rb
275
233
  - lib/brakeman/checks/check_without_protection.rb
276
234
  - lib/brakeman/checks/check_yaml_parsing.rb
277
- - lib/brakeman/checks.rb
278
235
  - lib/brakeman/differ.rb
279
236
  - lib/brakeman/format/style.css
280
237
  - lib/brakeman/options.rb
@@ -308,6 +265,7 @@ files:
308
265
  - lib/brakeman/processors/slim_template_processor.rb
309
266
  - lib/brakeman/processors/template_alias_processor.rb
310
267
  - lib/brakeman/processors/template_processor.rb
268
+ - lib/brakeman/report.rb
311
269
  - lib/brakeman/report/ignore/config.rb
312
270
  - lib/brakeman/report/ignore/interactive.rb
313
271
  - lib/brakeman/report/initializers/faster_csv.rb
@@ -331,7 +289,6 @@ files:
331
289
  - lib/brakeman/report/templates/template_overview.html.erb
332
290
  - lib/brakeman/report/templates/view_warnings.html.erb
333
291
  - lib/brakeman/report/templates/warning_overview.html.erb
334
- - lib/brakeman/report.rb
335
292
  - lib/brakeman/rescanner.rb
336
293
  - lib/brakeman/scanner.rb
337
294
  - lib/brakeman/tracker.rb
@@ -339,41 +296,30 @@ files:
339
296
  - lib/brakeman/version.rb
340
297
  - lib/brakeman/warning.rb
341
298
  - lib/brakeman/warning_codes.rb
342
- - lib/brakeman.rb
343
299
  - lib/ruby_parser/bm_sexp.rb
344
300
  - lib/ruby_parser/bm_sexp_processor.rb
345
301
  homepage: http://brakemanscanner.org
346
- licenses:
302
+ licenses:
347
303
  - MIT
304
+ metadata: {}
348
305
  post_install_message:
349
306
  rdoc_options: []
350
-
351
- require_paths:
307
+ require_paths:
352
308
  - lib
353
- required_ruby_version: !ruby/object:Gem::Requirement
354
- none: false
355
- requirements:
309
+ required_ruby_version: !ruby/object:Gem::Requirement
310
+ requirements:
356
311
  - - ">="
357
- - !ruby/object:Gem::Version
358
- hash: 3
359
- segments:
360
- - 0
361
- version: "0"
362
- required_rubygems_version: !ruby/object:Gem::Requirement
363
- none: false
364
- requirements:
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ required_rubygems_version: !ruby/object:Gem::Requirement
315
+ requirements:
365
316
  - - ">="
366
- - !ruby/object:Gem::Version
367
- hash: 3
368
- segments:
369
- - 0
370
- version: "0"
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
371
319
  requirements: []
372
-
373
320
  rubyforge_project:
374
- rubygems_version: 1.8.15
321
+ rubygems_version: 2.2.2
375
322
  signing_key:
376
- specification_version: 3
323
+ specification_version: 4
377
324
  summary: Security vulnerability scanner for Ruby on Rails.
378
325
  test_files: []
379
-
data.tar.gz.sig DELETED
@@ -1 +0,0 @@
1
- aW8K��JN���Y�0���'O�T֍�C�� @��C7�S��-X��Ȯ�TRd��������}�Ծ* �x(�����д�L�-�/�<#��*�$�ϯ"���Fb�� �������[�K��u��#���oaO^��^}�����g�f��$N�M`���.S` X�LO���_V|��g>�j1jK���ԧ����^w5�*���+��-�^H����X�\�a5 `#>2wƧ��6x����L�ڡ�
metadata.gz.sig DELETED
Binary file