brakeman 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
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