mrjoy-bundler-audit 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.document +3 -0
  3. data/.gitignore +6 -0
  4. data/.gitmodules +3 -0
  5. data/.rspec +1 -0
  6. data/.travis.yml +5 -0
  7. data/.yardopts +1 -0
  8. data/COPYING.txt +674 -0
  9. data/ChangeLog.md +79 -0
  10. data/Gemfile +14 -0
  11. data/README.md +105 -0
  12. data/Rakefile +47 -0
  13. data/bin/bundle-audit +10 -0
  14. data/data/ruby-advisory-db/.rspec +1 -0
  15. data/data/ruby-advisory-db/CONTRIBUTING.md +6 -0
  16. data/data/ruby-advisory-db/CONTRIBUTORS.md +13 -0
  17. data/data/ruby-advisory-db/Gemfile +3 -0
  18. data/data/ruby-advisory-db/LICENSE.txt +5 -0
  19. data/data/ruby-advisory-db/README.md +86 -0
  20. data/data/ruby-advisory-db/Rakefile +27 -0
  21. data/data/ruby-advisory-db/gems/actionpack/OSVDB-79727.yml +26 -0
  22. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84243.yml +28 -0
  23. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84513.yml +23 -0
  24. data/data/ruby-advisory-db/gems/actionpack/OSVDB-84515.yml +26 -0
  25. data/data/ruby-advisory-db/gems/actionpack/OSVDB-89026.yml +24 -0
  26. data/data/ruby-advisory-db/gems/actionpack/OSVDB-91452.yml +20 -0
  27. data/data/ruby-advisory-db/gems/actionpack/OSVDB-91454.yml +23 -0
  28. data/data/ruby-advisory-db/gems/activerecord/OSVDB-82403.yml +25 -0
  29. data/data/ruby-advisory-db/gems/activerecord/OSVDB-82610.yml +24 -0
  30. data/data/ruby-advisory-db/gems/activerecord/OSVDB-89025.yml +24 -0
  31. data/data/ruby-advisory-db/gems/activerecord/OSVDB-90072.yml +21 -0
  32. data/data/ruby-advisory-db/gems/activerecord/OSVDB-90073.yml +23 -0
  33. data/data/ruby-advisory-db/gems/activerecord/OSVDB-91453.yml +26 -0
  34. data/data/ruby-advisory-db/gems/activesupport/OSVDB-79726.yml +26 -0
  35. data/data/ruby-advisory-db/gems/activesupport/OSVDB-84516.yml +23 -0
  36. data/data/ruby-advisory-db/gems/activesupport/OSVDB-89594.yml +25 -0
  37. data/data/ruby-advisory-db/gems/activesupport/OSVDB-91451.yml +28 -0
  38. data/data/ruby-advisory-db/gems/command_wrap/OSVDB-91450.yml +10 -0
  39. data/data/ruby-advisory-db/gems/crack/OSVDB-90742.yml +17 -0
  40. data/data/ruby-advisory-db/gems/cremefraiche/OSVDB-93395.yml +11 -0
  41. data/data/ruby-advisory-db/gems/curl/OSVDB-91230.yml +12 -0
  42. data/data/ruby-advisory-db/gems/devise/OSVDB-89642.yml +20 -0
  43. data/data/ruby-advisory-db/gems/dragonfly/OSVDB-90647.yml +19 -0
  44. data/data/ruby-advisory-db/gems/enum_column3/OSVDB-94679.yml +9 -0
  45. data/data/ruby-advisory-db/gems/extlib/OSVDB-90740.yml +18 -0
  46. data/data/ruby-advisory-db/gems/fastreader/OSVDB-91232.yml +12 -0
  47. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90715.yml +10 -0
  48. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90716.yml +10 -0
  49. data/data/ruby-advisory-db/gems/fileutils/OSVDB-90717.yml +10 -0
  50. data/data/ruby-advisory-db/gems/flash_tool/OSVDB-90829.yml +9 -0
  51. data/data/ruby-advisory-db/gems/ftpd/OSVDB-90784.yml +18 -0
  52. data/data/ruby-advisory-db/gems/gtk2/OSVDB-40774.yml +20 -0
  53. data/data/ruby-advisory-db/gems/httparty/OSVDB-90741.yml +19 -0
  54. data/data/ruby-advisory-db/gems/json/OSVDB-90074.yml +23 -0
  55. data/data/ruby-advisory-db/gems/karteek-docsplit/OSVDB-92117.yml +10 -0
  56. data/data/ruby-advisory-db/gems/kelredd-pruview/OSVDB-92228.yml +10 -0
  57. data/data/ruby-advisory-db/gems/ldoce/OSVDB-91870.yml +10 -0
  58. data/data/ruby-advisory-db/gems/loofah/OSVDB-90945.yml +21 -0
  59. data/data/ruby-advisory-db/gems/mail/OSVDB-70667.yml +21 -0
  60. data/data/ruby-advisory-db/gems/mail/OSVDB-81631.yml +14 -0
  61. data/data/ruby-advisory-db/gems/mail/OSVDB-81632.yml +16 -0
  62. data/data/ruby-advisory-db/gems/md2pdf/OSVDB-92290.yml +10 -0
  63. data/data/ruby-advisory-db/gems/mini_magick/OSVDB-91231.yml +15 -0
  64. data/data/ruby-advisory-db/gems/multi_xml/OSVDB-89148.yml +16 -0
  65. data/data/ruby-advisory-db/gems/newrelic_rpm/OSVDB-90189.yml +17 -0
  66. data/data/ruby-advisory-db/gems/nori/OSVDB-90196.yml +19 -0
  67. data/data/ruby-advisory-db/gems/omniauth-oauth2/OSVDB-90264.yml +16 -0
  68. data/data/ruby-advisory-db/gems/pdfkit/OSVDB-90867.yml +11 -0
  69. data/data/ruby-advisory-db/gems/rack-cache/OSVDB-83077.yml +18 -0
  70. data/data/ruby-advisory-db/gems/rack/OSVDB-89939.yml +23 -0
  71. data/data/ruby-advisory-db/gems/rdoc/OSVDB-90004.yml +27 -0
  72. data/data/ruby-advisory-db/gems/rgpg/OSVDB-95948.yml +13 -0
  73. data/data/ruby-advisory-db/gems/ruby_parser/OSVDB-90561.yml +11 -0
  74. data/data/ruby-advisory-db/gems/spree/OSVDB-91216.yml +10 -0
  75. data/data/ruby-advisory-db/gems/spree/OSVDB-91217.yml +10 -0
  76. data/data/ruby-advisory-db/gems/spree/OSVDB-91218.yml +10 -0
  77. data/data/ruby-advisory-db/gems/spree/OSVDB-91219.yml +10 -0
  78. data/data/ruby-advisory-db/gems/thumbshooter/OSVDB-91839.yml +10 -0
  79. data/data/ruby-advisory-db/lib/scrape.rb +87 -0
  80. data/data/ruby-advisory-db/spec/advisory_example.rb +165 -0
  81. data/data/ruby-advisory-db/spec/gems_spec.rb +8 -0
  82. data/data/ruby-advisory-db/spec/spec_helper.rb +1 -0
  83. data/gemspec.yml +16 -0
  84. data/lib/bundler/audit.rb +21 -0
  85. data/lib/bundler/audit/advisory.rb +142 -0
  86. data/lib/bundler/audit/cli.rb +124 -0
  87. data/lib/bundler/audit/database.rb +187 -0
  88. data/lib/bundler/audit/scanner.rb +97 -0
  89. data/lib/bundler/audit/version.rb +25 -0
  90. data/mrjoy-bundler-audit.gemspec +66 -0
  91. data/spec/advisory_spec.rb +145 -0
  92. data/spec/audit_spec.rb +8 -0
  93. data/spec/bundle/insecure_sources/Gemfile +39 -0
  94. data/spec/bundle/secure/Gemfile +38 -0
  95. data/spec/bundle/unpatched_gems/Gemfile +38 -0
  96. data/spec/database_spec.rb +81 -0
  97. data/spec/integration_spec.rb +81 -0
  98. data/spec/scanner_spec.rb +74 -0
  99. data/spec/spec_helper.rb +21 -0
  100. metadata +162 -0
@@ -0,0 +1,81 @@
1
+ require 'spec_helper'
2
+ require 'bundler/audit/database'
3
+ require 'tmpdir'
4
+
5
+ describe Bundler::Audit::Database do
6
+ describe "PATH" do
7
+ subject { described_class::PATH }
8
+
9
+ it "it should be a directory" do
10
+ File.directory?(subject).should be_true
11
+ end
12
+ end
13
+
14
+ describe "#initialize" do
15
+ context "when given no arguments" do
16
+ subject { described_class.new }
17
+
18
+ it "should default path to PATH" do
19
+ subject.path.should == described_class::PATH
20
+ end
21
+ end
22
+
23
+ context "when given a directory" do
24
+ let(:path ) { Dir.tmpdir }
25
+
26
+ subject { described_class.new(path) }
27
+
28
+ it "should set #path" do
29
+ subject.path.should == path
30
+ end
31
+ end
32
+
33
+ context "when given an invalid directory" do
34
+ it "should raise an ArgumentError" do
35
+ lambda {
36
+ described_class.new('/foo/bar/baz')
37
+ }.should raise_error(ArgumentError)
38
+ end
39
+ end
40
+ end
41
+
42
+ describe "#check_gem" do
43
+ let(:gem) do
44
+ Gem::Specification.new do |s|
45
+ s.name = 'actionpack'
46
+ s.version = '3.1.9'
47
+ end
48
+ end
49
+
50
+ context "when given a block" do
51
+ it "should yield every advisory effecting the gem" do
52
+ advisories = []
53
+
54
+ subject.check_gem(gem) do |advisory|
55
+ advisories << advisory
56
+ end
57
+
58
+ advisories.should_not be_empty
59
+ advisories.all? { |advisory|
60
+ advisory.kind_of?(Bundler::Audit::Advisory)
61
+ }.should be_true
62
+ end
63
+ end
64
+
65
+ context "when given no block" do
66
+ it "should return an Enumerator" do
67
+ subject.check_gem(gem).should be_kind_of(Enumerable)
68
+ end
69
+ end
70
+ end
71
+
72
+ describe "#size" do
73
+ it { subject.size.should > 0 }
74
+ end
75
+
76
+ describe "#to_s" do
77
+ it "should return the Database path" do
78
+ subject.to_s.should == subject.path
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,81 @@
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 bundle with unpatched gems" do
11
+ let(:bundle) { 'unpatched_gems' }
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
+ advisory_pattern = /(Name: [^\n]+
24
+ Version: \d+.\d+.\d+
25
+ Advisory: CVE-\d+-\d+
26
+ Criticality: (High|Medium)
27
+ URL: http:\/\/(direct|www\.)?osvdb.org\/show\/osvdb\/\d+
28
+ Title: [^\n]*?
29
+ Solution: upgrade to ((~>|=>) \d+.\d+.\d+, )*(~>|=>) \d+.\d+.\d+[\s\n]*?)+/
30
+
31
+ expect(subject).to match(advisory_pattern)
32
+ expect(subject).to include("Unpatched versions found!")
33
+ end
34
+ end
35
+
36
+ context "when auditing a bundle with ignored gems" do
37
+ let(:bundle) { 'unpatched_gems' }
38
+ let(:directory) { File.join('spec','bundle',bundle) }
39
+
40
+ let(:command) do
41
+ File.expand_path(File.join(File.dirname(__FILE__),'..','bin','bundle-audit -i CVE-2013-0156'))
42
+ end
43
+
44
+ subject do
45
+ Dir.chdir(directory) { sh(command, :fail => true) }
46
+ end
47
+
48
+ it "should not print advisory information for ignored gem" do
49
+ subject.should_not include("CVE-2013-0156")
50
+ end
51
+ end
52
+
53
+ context "when auditing a bundle with insecure sources" do
54
+ let(:bundle) { 'insecure_sources' }
55
+ let(:directory) { File.join('spec','bundle',bundle) }
56
+
57
+ subject do
58
+ Dir.chdir(directory) { sh(command, :fail => true) }
59
+ end
60
+
61
+ it "should print warnings about insecure sources" do
62
+ subject.should include(%{
63
+ Insecure Source URI found: git://github.com/rails/jquery-rails.git
64
+ Insecure Source URI found: http://rubygems.org/
65
+ }.strip)
66
+ end
67
+ end
68
+
69
+ context "when auditing a secure bundle" do
70
+ let(:bundle) { 'secure' }
71
+ let(:directory) { File.join('spec','bundle',bundle) }
72
+
73
+ subject do
74
+ Dir.chdir(directory) { sh(command) }
75
+ end
76
+
77
+ it "should print nothing when everything is fine" do
78
+ subject.strip.should == "No unpatched versions found"
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,74 @@
1
+ require 'spec_helper'
2
+ require 'bundler/audit/scanner'
3
+
4
+ describe Scanner do
5
+ describe "#scan" do
6
+ let(:bundle) { 'unpatched_gems' }
7
+ let(:directory) { File.join('spec','bundle',bundle) }
8
+
9
+ subject { described_class.new(directory) }
10
+
11
+ it "should yield results" do
12
+ results = []
13
+
14
+ subject.scan { |result| results << result }
15
+
16
+ results.should_not be_empty
17
+ end
18
+
19
+ context "when not called with a block" do
20
+ it "should return an Enumerator" do
21
+ subject.scan.should be_kind_of(Enumerable)
22
+ end
23
+ end
24
+ end
25
+
26
+ context "when auditing a bundle with unpatched gems" do
27
+ let(:bundle) { 'unpatched_gems' }
28
+ let(:directory) { File.join('spec','bundle',bundle) }
29
+ let(:scanner) { described_class.new(directory) }
30
+
31
+ subject { scanner.scan.to_a }
32
+
33
+ it "should match unpatched gems to their advisories" do
34
+ subject[0].gem.name.should == 'actionpack'
35
+ subject[0].gem.version.to_s.should == '3.2.10'
36
+ subject[0].advisory.cve.should == '2013-0156'
37
+ end
38
+
39
+ context "when the :ignore option is given" do
40
+ subject { scanner.scan(:ignore => ['CVE-2013-0156']) }
41
+
42
+ it "should ignore the specified advisories" do
43
+ cves = subject.map { |result| result.advisory.cve }
44
+
45
+ cves.should_not include('2013-0156')
46
+ end
47
+ end
48
+ end
49
+
50
+ context "when auditing a bundle with insecure sources" do
51
+ let(:bundle) { 'insecure_sources' }
52
+ let(:directory) { File.join('spec','bundle',bundle) }
53
+ let(:scanner) { described_class.new(directory) }
54
+
55
+ subject { scanner.scan.to_a }
56
+
57
+ it "should match unpatched gems to their advisories" do
58
+ subject[0].source.should == 'git://github.com/rails/jquery-rails.git'
59
+ subject[1].source.should == 'http://rubygems.org/'
60
+ end
61
+ end
62
+
63
+ context "when auditing a secure bundle" do
64
+ let(:bundle) { 'secure' }
65
+ let(:directory) { File.join('spec','bundle',bundle) }
66
+ let(:scanner) { described_class.new(directory) }
67
+
68
+ subject { scanner.scan.to_a }
69
+
70
+ it "should print nothing when everything is fine" do
71
+ subject.should be_empty
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,21 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ Bundler.require
4
+ require 'rspec'
5
+ require 'bundler/audit/version'
6
+
7
+ module Helpers
8
+ def sh(command, options={})
9
+ Bundler.with_clean_env do
10
+ result = `#{command} 2>&1`
11
+ raise "FAILED #{command}\n#{result}" if $?.success? == !!options[:fail]
12
+ result
13
+ end
14
+ end
15
+
16
+ def decolorize(string)
17
+ string.gsub(/\e\[\d+m/, "")
18
+ end
19
+ end
20
+
21
+ include Bundler::Audit
metadata ADDED
@@ -0,0 +1,162 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mrjoy-bundler-audit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
5
+ platform: ruby
6
+ authors:
7
+ - Postmodern
8
+ - MrJoy
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-08-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bundler
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ~>
19
+ - !ruby/object:Gem::Version
20
+ version: '1.2'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '1.2'
28
+ description: bundler-audit provides patch-level verification for Bundled apps.
29
+ email:
30
+ - postmodern.mod3@gmail.com
31
+ - jfrisby@mrjoy.com
32
+ executables:
33
+ - bundle-audit
34
+ extensions: []
35
+ extra_rdoc_files:
36
+ - COPYING.txt
37
+ - ChangeLog.md
38
+ - README.md
39
+ files:
40
+ - .document
41
+ - .gitignore
42
+ - .gitmodules
43
+ - .rspec
44
+ - .travis.yml
45
+ - .yardopts
46
+ - COPYING.txt
47
+ - ChangeLog.md
48
+ - Gemfile
49
+ - README.md
50
+ - Rakefile
51
+ - bin/bundle-audit
52
+ - gemspec.yml
53
+ - lib/bundler/audit.rb
54
+ - lib/bundler/audit/advisory.rb
55
+ - lib/bundler/audit/cli.rb
56
+ - lib/bundler/audit/database.rb
57
+ - lib/bundler/audit/scanner.rb
58
+ - lib/bundler/audit/version.rb
59
+ - mrjoy-bundler-audit.gemspec
60
+ - spec/advisory_spec.rb
61
+ - spec/audit_spec.rb
62
+ - spec/bundle/insecure_sources/Gemfile
63
+ - spec/bundle/secure/Gemfile
64
+ - spec/bundle/unpatched_gems/Gemfile
65
+ - spec/database_spec.rb
66
+ - spec/integration_spec.rb
67
+ - spec/scanner_spec.rb
68
+ - spec/spec_helper.rb
69
+ - data/ruby-advisory-db/.rspec
70
+ - data/ruby-advisory-db/CONTRIBUTING.md
71
+ - data/ruby-advisory-db/CONTRIBUTORS.md
72
+ - data/ruby-advisory-db/Gemfile
73
+ - data/ruby-advisory-db/LICENSE.txt
74
+ - data/ruby-advisory-db/README.md
75
+ - data/ruby-advisory-db/Rakefile
76
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-79727.yml
77
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-84243.yml
78
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-84513.yml
79
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-84515.yml
80
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-89026.yml
81
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-91452.yml
82
+ - data/ruby-advisory-db/gems/actionpack/OSVDB-91454.yml
83
+ - data/ruby-advisory-db/gems/activerecord/OSVDB-82403.yml
84
+ - data/ruby-advisory-db/gems/activerecord/OSVDB-82610.yml
85
+ - data/ruby-advisory-db/gems/activerecord/OSVDB-89025.yml
86
+ - data/ruby-advisory-db/gems/activerecord/OSVDB-90072.yml
87
+ - data/ruby-advisory-db/gems/activerecord/OSVDB-90073.yml
88
+ - data/ruby-advisory-db/gems/activerecord/OSVDB-91453.yml
89
+ - data/ruby-advisory-db/gems/activesupport/OSVDB-79726.yml
90
+ - data/ruby-advisory-db/gems/activesupport/OSVDB-84516.yml
91
+ - data/ruby-advisory-db/gems/activesupport/OSVDB-89594.yml
92
+ - data/ruby-advisory-db/gems/activesupport/OSVDB-91451.yml
93
+ - data/ruby-advisory-db/gems/command_wrap/OSVDB-91450.yml
94
+ - data/ruby-advisory-db/gems/crack/OSVDB-90742.yml
95
+ - data/ruby-advisory-db/gems/cremefraiche/OSVDB-93395.yml
96
+ - data/ruby-advisory-db/gems/curl/OSVDB-91230.yml
97
+ - data/ruby-advisory-db/gems/devise/OSVDB-89642.yml
98
+ - data/ruby-advisory-db/gems/dragonfly/OSVDB-90647.yml
99
+ - data/ruby-advisory-db/gems/enum_column3/OSVDB-94679.yml
100
+ - data/ruby-advisory-db/gems/extlib/OSVDB-90740.yml
101
+ - data/ruby-advisory-db/gems/fastreader/OSVDB-91232.yml
102
+ - data/ruby-advisory-db/gems/fileutils/OSVDB-90715.yml
103
+ - data/ruby-advisory-db/gems/fileutils/OSVDB-90716.yml
104
+ - data/ruby-advisory-db/gems/fileutils/OSVDB-90717.yml
105
+ - data/ruby-advisory-db/gems/flash_tool/OSVDB-90829.yml
106
+ - data/ruby-advisory-db/gems/ftpd/OSVDB-90784.yml
107
+ - data/ruby-advisory-db/gems/gtk2/OSVDB-40774.yml
108
+ - data/ruby-advisory-db/gems/httparty/OSVDB-90741.yml
109
+ - data/ruby-advisory-db/gems/json/OSVDB-90074.yml
110
+ - data/ruby-advisory-db/gems/karteek-docsplit/OSVDB-92117.yml
111
+ - data/ruby-advisory-db/gems/kelredd-pruview/OSVDB-92228.yml
112
+ - data/ruby-advisory-db/gems/ldoce/OSVDB-91870.yml
113
+ - data/ruby-advisory-db/gems/loofah/OSVDB-90945.yml
114
+ - data/ruby-advisory-db/gems/mail/OSVDB-70667.yml
115
+ - data/ruby-advisory-db/gems/mail/OSVDB-81631.yml
116
+ - data/ruby-advisory-db/gems/mail/OSVDB-81632.yml
117
+ - data/ruby-advisory-db/gems/md2pdf/OSVDB-92290.yml
118
+ - data/ruby-advisory-db/gems/mini_magick/OSVDB-91231.yml
119
+ - data/ruby-advisory-db/gems/multi_xml/OSVDB-89148.yml
120
+ - data/ruby-advisory-db/gems/newrelic_rpm/OSVDB-90189.yml
121
+ - data/ruby-advisory-db/gems/nori/OSVDB-90196.yml
122
+ - data/ruby-advisory-db/gems/omniauth-oauth2/OSVDB-90264.yml
123
+ - data/ruby-advisory-db/gems/pdfkit/OSVDB-90867.yml
124
+ - data/ruby-advisory-db/gems/rack-cache/OSVDB-83077.yml
125
+ - data/ruby-advisory-db/gems/rack/OSVDB-89939.yml
126
+ - data/ruby-advisory-db/gems/rdoc/OSVDB-90004.yml
127
+ - data/ruby-advisory-db/gems/rgpg/OSVDB-95948.yml
128
+ - data/ruby-advisory-db/gems/ruby_parser/OSVDB-90561.yml
129
+ - data/ruby-advisory-db/gems/spree/OSVDB-91216.yml
130
+ - data/ruby-advisory-db/gems/spree/OSVDB-91217.yml
131
+ - data/ruby-advisory-db/gems/spree/OSVDB-91218.yml
132
+ - data/ruby-advisory-db/gems/spree/OSVDB-91219.yml
133
+ - data/ruby-advisory-db/gems/thumbshooter/OSVDB-91839.yml
134
+ - data/ruby-advisory-db/lib/scrape.rb
135
+ - data/ruby-advisory-db/spec/advisory_example.rb
136
+ - data/ruby-advisory-db/spec/gems_spec.rb
137
+ - data/ruby-advisory-db/spec/spec_helper.rb
138
+ homepage: https://github.com/MrJoy/mrjoy-bundler-audit#readme
139
+ licenses:
140
+ - GPLv3
141
+ metadata: {}
142
+ post_install_message:
143
+ rdoc_options: []
144
+ require_paths:
145
+ - lib
146
+ required_ruby_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - '>='
154
+ - !ruby/object:Gem::Version
155
+ version: 1.8.0
156
+ requirements: []
157
+ rubyforge_project:
158
+ rubygems_version: 2.0.5
159
+ signing_key:
160
+ specification_version: 4
161
+ summary: Patch-level verification for Bundler
162
+ test_files: []