bundler-audit 0.1.1 → 0.1.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.
Files changed (63) hide show
  1. data/.gitignore +3 -0
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +4 -0
  4. data/ChangeLog.md +13 -0
  5. data/Gemfile +12 -0
  6. data/README.md +3 -37
  7. data/Rakefile +20 -49
  8. data/bundler-audit.gemspec +7 -0
  9. data/data/ruby-advisory-db/.rspec +1 -0
  10. data/data/ruby-advisory-db/README.md +64 -0
  11. data/data/ruby-advisory-db/gems/actionpack/2012-1099.yml +23 -0
  12. data/data/{bundler/audit/rails → ruby-advisory-db/gems/actionpack}/2012-3424.yml +10 -6
  13. data/data/ruby-advisory-db/gems/actionpack/2012-3463.yml +20 -0
  14. data/data/ruby-advisory-db/gems/actionpack/2012-3465.yml +20 -0
  15. data/data/{bundler/audit/rails → ruby-advisory-db/gems/actionpack}/2013-0156.yml +5 -3
  16. data/data/ruby-advisory-db/gems/activerecord/2012-2660.yml +21 -0
  17. data/data/ruby-advisory-db/gems/activerecord/2012-2661.yml +19 -0
  18. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activerecord}/2013-0155.yml +6 -4
  19. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activerecord}/2013-0276.yml +5 -3
  20. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activerecord}/2013-0277.yml +5 -3
  21. data/data/ruby-advisory-db/gems/activesupport/2012-1098.yml +20 -0
  22. data/data/ruby-advisory-db/gems/activesupport/2012-3464.yml +20 -0
  23. data/data/{bundler/audit/rails → ruby-advisory-db/gems/activesupport}/2013-0333.yml +5 -3
  24. data/data/ruby-advisory-db/gems/devise/2013-0233.yml +18 -0
  25. data/data/ruby-advisory-db/gems/gtk2/2007-6183.yml +18 -0
  26. data/data/{bundler/audit → ruby-advisory-db/gems}/json/2013-0269.yml +4 -2
  27. data/data/ruby-advisory-db/gems/mail/2011-0739.yml +19 -0
  28. data/data/ruby-advisory-db/gems/mail/2012-2139.yml +11 -0
  29. data/data/ruby-advisory-db/gems/mail/2012-2140.yml +11 -0
  30. data/data/ruby-advisory-db/gems/multi_xml/2013-0175.yml +14 -0
  31. data/data/ruby-advisory-db/gems/newrelic_rpm/2013-0284.yml +15 -0
  32. data/data/ruby-advisory-db/gems/nori/2013-0285.yml +17 -0
  33. data/data/ruby-advisory-db/gems/omniauth-oauth2/2012-6134.yml +14 -0
  34. data/data/ruby-advisory-db/gems/rack-cache/2012-267.yml +16 -0
  35. data/data/{bundler/audit → ruby-advisory-db/gems}/rack/2013-0263.yml +9 -8
  36. data/data/ruby-advisory-db/gems/rdoc/2013-0256.yml +25 -0
  37. data/data/ruby-advisory-db/spec/advisory_example.rb +80 -0
  38. data/data/ruby-advisory-db/spec/gems_spec.rb +8 -0
  39. data/data/ruby-advisory-db/spec/spec_helper.rb +1 -0
  40. data/gemspec.yml +1 -6
  41. data/lib/bundler/audit/advisory.rb +13 -1
  42. data/lib/bundler/audit/cli.rb +17 -6
  43. data/lib/bundler/audit/database.rb +1 -30
  44. data/lib/bundler/audit/version.rb +1 -1
  45. data/spec/advisory_spec.rb +1 -1
  46. data/spec/bundle/secure/Gemfile +38 -0
  47. data/spec/bundle/{Gemfile → vuln/Gemfile} +0 -0
  48. data/spec/database_spec.rb +1 -32
  49. data/spec/integration_spec.rb +63 -0
  50. data/spec/spec_helper.rb +14 -1
  51. metadata +68 -112
  52. data/data/bundler/audit/mail/2011-0739.yml +0 -17
  53. data/data/bundler/audit/mail/2012-2139.yml +0 -16
  54. data/data/bundler/audit/mail/2012-2140.yml +0 -13
  55. data/data/bundler/audit/rack-cache/2012-267.yml +0 -14
  56. data/data/bundler/audit/rails/2012-1098.yml +0 -19
  57. data/data/bundler/audit/rails/2012-1099.yml +0 -19
  58. data/data/bundler/audit/rails/2012-2660.yml +0 -17
  59. data/data/bundler/audit/rails/2012-2661.yml +0 -18
  60. data/data/bundler/audit/rails/2012-3463.yml +0 -19
  61. data/data/bundler/audit/rails/2012-3464.yml +0 -18
  62. data/data/bundler/audit/rails/2012-3465.yml +0 -19
  63. data/spec/bundle/Gemfile.lock +0 -92
@@ -0,0 +1,8 @@
1
+ require 'spec_helper'
2
+ require 'advisory_example'
3
+
4
+ describe "gems" do
5
+ Dir.glob('gems/*/*.yml') do |path|
6
+ include_examples 'Advisory', path
7
+ end
8
+ end
@@ -0,0 +1 @@
1
+ require 'rspec'
data/gemspec.yml CHANGED
@@ -7,9 +7,4 @@ email: postmodern.mod3@gmail.com
7
7
  homepage: https://github.com/postmodern/bundler-audit#readme
8
8
 
9
9
  dependencies:
10
- bundler: ~> 1.0
11
-
12
- development_dependencies:
13
- rspec: ~> 2.4
14
- rubygems-tasks: ~> 0.2
15
- yard: ~> 0.8
10
+ bundler: ~> 1.2
@@ -19,7 +19,8 @@ require 'yaml'
19
19
 
20
20
  module Bundler
21
21
  module Audit
22
- class Advisory < Struct.new(:cve,
22
+ class Advisory < Struct.new(:path,
23
+ :cve,
23
24
  :url,
24
25
  :title,
25
26
  :description,
@@ -45,6 +46,7 @@ module Bundler
45
46
  end
46
47
 
47
48
  return new(
49
+ path,
48
50
  cve,
49
51
  data['url'],
50
52
  data['title'],
@@ -85,6 +87,16 @@ module Bundler
85
87
  end
86
88
  end
87
89
 
90
+ #
91
+ # Converts the advisory to a String.
92
+ #
93
+ # @return [String]
94
+ # The CVE identifier.
95
+ #
96
+ def to_s
97
+ "CVE-#{cve}"
98
+ end
99
+
88
100
  end
89
101
  end
90
102
  end
@@ -32,19 +32,20 @@ module Bundler
32
32
  method_option :verbose, :type => :boolean, :aliases => '-v'
33
33
 
34
34
  def check
35
- environment = Bundler.load
36
35
  database = Database.new
37
36
  vulnerable = false
37
+ lock_file = load_gemfile_lock('Gemfile.lock')
38
38
 
39
- database.check_bundle(environment) do |gem,advisory|
40
- vulnerable = true
41
-
42
- print_advisory gem, advisory
39
+ lock_file.specs.each do |gem|
40
+ database.check_gem(gem) do |advisory|
41
+ vulnerable = true
42
+ print_advisory gem, advisory
43
+ end
43
44
  end
44
45
 
45
46
  if vulnerable
46
47
  say "Unpatched versions found!", :red
47
- return -1
48
+ exit 1
48
49
  else
49
50
  say "No unpatched versions found", :green
50
51
  end
@@ -59,6 +60,10 @@ module Bundler
59
60
 
60
61
  protected
61
62
 
63
+ def load_gemfile_lock(path)
64
+ Bundler::LockfileParser.new(File.read(path))
65
+ end
66
+
62
67
  def print_advisory(gem, advisory)
63
68
  say "Name: ", :red
64
69
  say gem.name
@@ -74,6 +79,7 @@ module Bundler
74
79
  when :low then say "Low"
75
80
  when :medium then say "Medium", :yellow
76
81
  when :high then say "High", [:red, :bold]
82
+ else say "Unknown"
77
83
  end
78
84
 
79
85
  say "URL: ", :red
@@ -102,6 +108,11 @@ module Bundler
102
108
  say
103
109
  end
104
110
 
111
+ def say(string="", color=nil)
112
+ color = nil unless $stdout.tty?
113
+ super(string, color)
114
+ end
115
+
105
116
  end
106
117
  end
107
118
  end
@@ -28,7 +28,7 @@ module Bundler
28
28
  class Database
29
29
 
30
30
  # directory containing advisories
31
- PATH = File.expand_path(File.join(File.dirname(__FILE__),'..','..','..','data','bundler','audit'))
31
+ PATH = File.expand_path(File.join(File.dirname(__FILE__),'..','..','..','data','ruby-advisory-db','gems'))
32
32
 
33
33
  # The path to the advisory database
34
34
  attr_reader :path
@@ -119,35 +119,6 @@ module Bundler
119
119
  end
120
120
  end
121
121
 
122
- #
123
- # Verifies whether the bundled gems are effected by any advisories.
124
- #
125
- # @param [Bundle::Environment] environment
126
- # The bundled gems.
127
- #
128
- # @yield [gem, advisory]
129
- # If a block is given, each advisory that effects a gem within the
130
- # bundle will be passed.
131
- #
132
- # @yieldparam [Gem::Specification] gem
133
- # The gem effected by the advisory.
134
- #
135
- # @yieldparam [Advisory] advisory
136
- # An advisory that effects a gem within the bundle.
137
- #
138
- # @return [Enumerator]
139
- # If no block is given, an Enumerator will be returned.
140
- #
141
- def check_bundle(environment)
142
- return enum_for(__method__,environment) unless block_given?
143
-
144
- environment.gems.each do |gem|
145
- check_gem(gem) do |advisory|
146
- yield gem, advisory
147
- end
148
- end
149
- end
150
-
151
122
  #
152
123
  # The number of advisories within the database.
153
124
  #
@@ -18,6 +18,6 @@
18
18
  module Bundler
19
19
  module Audit
20
20
  # bundler-audit version
21
- VERSION = "0.1.1"
21
+ VERSION = "0.1.2"
22
22
  end
23
23
  end
@@ -4,7 +4,7 @@ require 'bundler/audit/advisory'
4
4
 
5
5
  describe Bundler::Audit::Advisory do
6
6
  let(:root) { Bundler::Audit::Database::PATH }
7
- let(:gem) { 'rails' }
7
+ let(:gem) { 'actionpack' }
8
8
  let(:cve) { '2013-0156' }
9
9
  let(:path) { File.join(root,gem,"#{cve}.yml") }
10
10
 
@@ -0,0 +1,38 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '3.2.12'
4
+
5
+ # Bundle edge Rails instead:
6
+ # gem 'rails', :git => 'git://github.com/rails/rails.git'
7
+
8
+ gem 'sqlite3'
9
+
10
+
11
+ # Gems used only for assets and not required
12
+ # in production environments by default.
13
+ group :assets do
14
+ # gem 'sass-rails', '~> 3.2.3'
15
+ # gem 'coffee-rails', '~> 3.2.1'
16
+
17
+ # See https://github.com/sstephenson/execjs#readme for more supported runtimes
18
+ # gem 'therubyracer', :platforms => :ruby
19
+
20
+ # gem 'uglifier', '>= 1.0.3'
21
+ end
22
+
23
+ gem 'jquery-rails'
24
+
25
+ # To use ActiveModel has_secure_password
26
+ # gem 'bcrypt-ruby', '~> 3.0.0'
27
+
28
+ # To use Jbuilder templates for JSON
29
+ # gem 'jbuilder'
30
+
31
+ # Use unicorn as the app server
32
+ # gem 'unicorn'
33
+
34
+ # Deploy with Capistrano
35
+ # gem 'capistrano'
36
+
37
+ # To use debugger
38
+ # gem 'debugger'
File without changes
@@ -1,7 +1,5 @@
1
1
  require 'spec_helper'
2
2
  require 'bundler/audit/database'
3
-
4
- require 'bundler'
5
3
  require 'tmpdir'
6
4
 
7
5
  describe Bundler::Audit::Database do
@@ -44,7 +42,7 @@ describe Bundler::Audit::Database do
44
42
  describe "#check_gem" do
45
43
  let(:gem) do
46
44
  Gem::Specification.new do |s|
47
- s.name = 'rails'
45
+ s.name = 'actionpack'
48
46
  s.version = '3.1.9'
49
47
  end
50
48
  end
@@ -71,35 +69,6 @@ describe Bundler::Audit::Database do
71
69
  end
72
70
  end
73
71
 
74
- describe "#check_bundle" do
75
- let(:path) { File.join(File.dirname(__FILE__),'bundle') }
76
- let(:bundle) do
77
- Dir.chdir(path) { Bundler.load }
78
- end
79
-
80
- context "when given a block" do
81
- it "should yield every advisory effecting the bundle" do
82
- advisories = []
83
-
84
- subject.check_bundle(bundle) do |gem,advisory|
85
- advisories << [gem, advisory]
86
- end
87
-
88
- advisories.should_not be_empty
89
- advisories.all? { |gem,advisory|
90
- gem.kind_of?(Gem::Specification) &&
91
- advisory.kind_of?(Bundler::Audit::Advisory)
92
- }.should be_true
93
- end
94
- end
95
-
96
- context "when given no block" do
97
- it "should return an Enumerator" do
98
- subject.check_bundle(bundle).should be_kind_of(Enumerable)
99
- end
100
- end
101
- end
102
-
103
72
  describe "#size" do
104
73
  it { subject.size.should > 0 }
105
74
  end
@@ -0,0 +1,63 @@
1
+ require 'spec_helper'
2
+
3
+ describe "CLI" do
4
+ include Helpers
5
+
6
+ let(:command) do
7
+ File.expand_path(File.join(File.dirname(__FILE__),'..','bin','bundle-audit'))
8
+ end
9
+
10
+ context "when auditing a vulnerable bundle" do
11
+ let(:bundle) { 'vuln' }
12
+ let(:directory) { File.join('spec','bundle',bundle) }
13
+
14
+ subject do
15
+ Dir.chdir(directory) { sh(command, :fail => true) }
16
+ end
17
+
18
+ it "should print a warning" do
19
+ subject.should include("Unpatched versions found!")
20
+ end
21
+
22
+ it "should print advisory information for the vulnerable gems" do
23
+ subject.should include(%{
24
+ Name: actionpack
25
+ Version: 3.2.10
26
+ CVE: 2013-0156
27
+ Criticality: High
28
+ URL: http://osvdb.org/show/osvdb/89026
29
+ Title: Ruby on Rails params_parser.rb Action Pack Type Casting Parameter Parsing Remote Code Execution
30
+ Solution: upgrade to ~> 2.3.15, ~> 3.0.19, ~> 3.1.10, >= 3.2.11
31
+
32
+ Name: activerecord
33
+ Version: 3.2.10
34
+ CVE: 2013-0276
35
+ Criticality: Medium
36
+ URL: http://direct.osvdb.org/show/osvdb/90072
37
+ Title: Ruby on Rails Active Record attr_protected Method Bypass
38
+ Solution: upgrade to ~> 2.3.17, ~> 3.1.11, >= 3.2.12
39
+
40
+ Name: activerecord
41
+ Version: 3.2.10
42
+ CVE: 2013-0155
43
+ Criticality: High
44
+ URL: http://osvdb.org/show/osvdb/89025
45
+ Title: Ruby on Rails Active Record JSON Parameter Parsing Query Bypass
46
+ Solution: upgrade to ~> 2.3.16, ~> 3.0.19, ~> 3.1.10, >= 3.2.11
47
+ }.strip)
48
+ end
49
+ end
50
+
51
+ context "when auditing a secure bundle" do
52
+ let(:bundle) { 'secure' }
53
+ let(:directory) { File.join('spec','bundle',bundle) }
54
+
55
+ subject do
56
+ Dir.chdir(directory) { sh(command) }
57
+ end
58
+
59
+ it "should print nothing when everything is fine" do
60
+ subject.strip.should == "No unpatched versions found"
61
+ end
62
+ end
63
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,18 @@
1
- gem 'rspec', '~> 2.4'
2
1
  require 'rspec'
3
2
  require 'bundler/audit/version'
4
3
 
4
+ module Helpers
5
+ def sh(command, options={})
6
+ Bundler.with_clean_env do
7
+ result = `#{command} 2>&1`
8
+ raise "FAILED #{command}\n#{result}" if $?.success? == !!options[:fail]
9
+ result
10
+ end
11
+ end
12
+
13
+ def decolorize(string)
14
+ string.gsub(/\e\[\d+m/, "")
15
+ end
16
+ end
17
+
5
18
  include Bundler::Audit
metadata CHANGED
@@ -1,122 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: bundler-audit
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Postmodern
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2013-02-12 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2013-02-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: bundler
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 15
29
- segments:
30
- - 1
31
- - 0
32
- version: "1.0"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.2'
33
22
  type: :runtime
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
36
- name: yard
37
- prerelease: false
38
- requirement: &id002 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 27
44
- segments:
45
- - 0
46
- - 8
47
- version: "0.8"
48
- type: :development
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rubygems-tasks
52
- prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
54
- none: false
55
- requirements:
56
- - - ~>
57
- - !ruby/object:Gem::Version
58
- hash: 15
59
- segments:
60
- - 0
61
- - 2
62
- version: "0.2"
63
- type: :development
64
- version_requirements: *id003
65
- - !ruby/object:Gem::Dependency
66
- name: rspec
67
23
  prerelease: false
68
- requirement: &id004 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
69
25
  none: false
70
- requirements:
26
+ requirements:
71
27
  - - ~>
72
- - !ruby/object:Gem::Version
73
- hash: 11
74
- segments:
75
- - 2
76
- - 4
77
- version: "2.4"
78
- type: :development
79
- version_requirements: *id004
28
+ - !ruby/object:Gem::Version
29
+ version: '1.2'
80
30
  description: bundler-audit provides patch-level verification for Bundled apps.
81
31
  email: postmodern.mod3@gmail.com
82
- executables:
32
+ executables:
83
33
  - bundle-audit
84
34
  extensions: []
85
-
86
- extra_rdoc_files:
35
+ extra_rdoc_files:
87
36
  - COPYING.txt
88
37
  - ChangeLog.md
89
38
  - README.md
90
- files:
39
+ files:
91
40
  - .document
92
41
  - .gitignore
42
+ - .gitmodules
93
43
  - .rspec
44
+ - .travis.yml
94
45
  - .yardopts
95
46
  - COPYING.txt
96
47
  - ChangeLog.md
48
+ - Gemfile
97
49
  - README.md
98
50
  - Rakefile
99
51
  - bin/bundle-audit
100
52
  - bundler-audit.gemspec
101
- - data/bundler/audit/json/2013-0269.yml
102
- - data/bundler/audit/mail/2011-0739.yml
103
- - data/bundler/audit/mail/2012-2139.yml
104
- - data/bundler/audit/mail/2012-2140.yml
105
- - data/bundler/audit/rack-cache/2012-267.yml
106
- - data/bundler/audit/rack/2013-0263.yml
107
- - data/bundler/audit/rails/2012-1098.yml
108
- - data/bundler/audit/rails/2012-1099.yml
109
- - data/bundler/audit/rails/2012-2660.yml
110
- - data/bundler/audit/rails/2012-2661.yml
111
- - data/bundler/audit/rails/2012-3424.yml
112
- - data/bundler/audit/rails/2012-3463.yml
113
- - data/bundler/audit/rails/2012-3464.yml
114
- - data/bundler/audit/rails/2012-3465.yml
115
- - data/bundler/audit/rails/2013-0155.yml
116
- - data/bundler/audit/rails/2013-0156.yml
117
- - data/bundler/audit/rails/2013-0276.yml
118
- - data/bundler/audit/rails/2013-0277.yml
119
- - data/bundler/audit/rails/2013-0333.yml
120
53
  - gemspec.yml
121
54
  - lib/bundler/audit.rb
122
55
  - lib/bundler/audit/advisory.rb
@@ -125,42 +58,65 @@ files:
125
58
  - lib/bundler/audit/version.rb
126
59
  - spec/advisory_spec.rb
127
60
  - spec/audit_spec.rb
128
- - spec/bundle/Gemfile
129
- - spec/bundle/Gemfile.lock
61
+ - spec/bundle/secure/Gemfile
62
+ - spec/bundle/vuln/Gemfile
130
63
  - spec/database_spec.rb
64
+ - spec/integration_spec.rb
131
65
  - spec/spec_helper.rb
66
+ - data/ruby-advisory-db/.rspec
67
+ - data/ruby-advisory-db/README.md
68
+ - data/ruby-advisory-db/gems/actionpack/2012-1099.yml
69
+ - data/ruby-advisory-db/gems/actionpack/2012-3424.yml
70
+ - data/ruby-advisory-db/gems/actionpack/2012-3463.yml
71
+ - data/ruby-advisory-db/gems/actionpack/2012-3465.yml
72
+ - data/ruby-advisory-db/gems/actionpack/2013-0156.yml
73
+ - data/ruby-advisory-db/gems/activerecord/2012-2660.yml
74
+ - data/ruby-advisory-db/gems/activerecord/2012-2661.yml
75
+ - data/ruby-advisory-db/gems/activerecord/2013-0155.yml
76
+ - data/ruby-advisory-db/gems/activerecord/2013-0276.yml
77
+ - data/ruby-advisory-db/gems/activerecord/2013-0277.yml
78
+ - data/ruby-advisory-db/gems/activesupport/2012-1098.yml
79
+ - data/ruby-advisory-db/gems/activesupport/2012-3464.yml
80
+ - data/ruby-advisory-db/gems/activesupport/2013-0333.yml
81
+ - data/ruby-advisory-db/gems/devise/2013-0233.yml
82
+ - data/ruby-advisory-db/gems/gtk2/2007-6183.yml
83
+ - data/ruby-advisory-db/gems/json/2013-0269.yml
84
+ - data/ruby-advisory-db/gems/mail/2011-0739.yml
85
+ - data/ruby-advisory-db/gems/mail/2012-2139.yml
86
+ - data/ruby-advisory-db/gems/mail/2012-2140.yml
87
+ - data/ruby-advisory-db/gems/multi_xml/2013-0175.yml
88
+ - data/ruby-advisory-db/gems/newrelic_rpm/2013-0284.yml
89
+ - data/ruby-advisory-db/gems/nori/2013-0285.yml
90
+ - data/ruby-advisory-db/gems/omniauth-oauth2/2012-6134.yml
91
+ - data/ruby-advisory-db/gems/rack-cache/2012-267.yml
92
+ - data/ruby-advisory-db/gems/rack/2013-0263.yml
93
+ - data/ruby-advisory-db/gems/rdoc/2013-0256.yml
94
+ - data/ruby-advisory-db/spec/advisory_example.rb
95
+ - data/ruby-advisory-db/spec/gems_spec.rb
96
+ - data/ruby-advisory-db/spec/spec_helper.rb
132
97
  homepage: https://github.com/postmodern/bundler-audit#readme
133
- licenses:
98
+ licenses:
134
99
  - GPLv3
135
100
  post_install_message:
136
101
  rdoc_options: []
137
-
138
- require_paths:
102
+ require_paths:
139
103
  - lib
140
- required_ruby_version: !ruby/object:Gem::Requirement
104
+ required_ruby_version: !ruby/object:Gem::Requirement
141
105
  none: false
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- hash: 3
146
- segments:
147
- - 0
148
- version: "0"
149
- required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
111
  none: false
151
- requirements:
152
- - - ">="
153
- - !ruby/object:Gem::Version
154
- hash: 3
155
- segments:
156
- - 0
157
- version: "0"
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
158
116
  requirements: []
159
-
160
117
  rubyforge_project:
161
- rubygems_version: 1.8.24
118
+ rubygems_version: 1.8.25
162
119
  signing_key:
163
120
  specification_version: 3
164
121
  summary: Patch-level verification for Bundler
165
122
  test_files: []
166
-