configurability 2.1.0 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae00303104896fbdb4479b741a713cf98447ca1a
4
- data.tar.gz: d7aaa1d875c3f4dd0e20e152ba76ba52e62be667
3
+ metadata.gz: 06d07154d070a00edad0282c0dc59e0c5e66ef95
4
+ data.tar.gz: a4b60f5580fd34ca3d8d84adc19628381fb2c640
5
5
  SHA512:
6
- metadata.gz: fd1b469747088b887326ec6c65996e3c5485606eb20ce62556e45b407ba50b26d964fdcc6893130a7e26ae1c5981e549cff58638b1b2edb7cc709fc149574ee6
7
- data.tar.gz: 68d3cb5b755de3e19b5ff1d910cd8f7b8ba12856627484d7d9c90da6219db3ff928aabc4250231329afa1a93367b8bfa43f84b95257e2a1afe7b983367b824b8
6
+ metadata.gz: d72df2c94b3d9d35fa8ec2b7485ca54c7c99a0f24fc061c6bf21c8c1f6d16a4f6e66aa8a2c87c6b988bf8e55168e7c805453a5a8f696656fefadd332101d993a
7
+ data.tar.gz: 0e9900c3689b65a0e4d5c6e63e66a953bace0b1f2cc94735369cdc6406756c8def7c60fe803fd2cddace09298816a6c3a4443d2f13253b1825f8238ecbcb7ea3
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/History.rdoc CHANGED
@@ -1,3 +1,9 @@
1
+ == v2.1.1 [2013-11-20] Michael Granger <ged@FaerieMUD.org>
2
+
3
+ - Fix untainting to not try to dup/untaint immediate objects.
4
+ Thanks to john@cozy.co for the bug report.
5
+
6
+
1
7
  == v2.1.0 [2013-08-13] Michael Granger <ged@FaerieMUD.org>
2
8
 
3
9
  - Fix behavior of inherited Configurability
data/Rakefile CHANGED
@@ -10,29 +10,30 @@ end
10
10
  Hoe.plugin :mercurial
11
11
  Hoe.plugin :signing
12
12
  Hoe.plugin :deveiate
13
+ Hoe.plugin :bundler
13
14
 
14
15
  Hoe.plugins.delete :rubyforge
15
16
 
16
17
  Encoding.default_internal = Encoding::UTF_8
17
18
 
18
- hoespec = Hoe.spec 'configurability' do
19
- self.readme_file = 'README.rdoc'
20
- self.history_file = 'History.rdoc'
21
- self.extra_rdoc_files = Rake::FileList[ '*.rdoc' ]
19
+ hoespec = Hoe.spec 'configurability' do |spec|
20
+ spec.readme_file = 'README.rdoc'
21
+ spec.history_file = 'History.rdoc'
22
+ spec.extra_rdoc_files = Rake::FileList[ '*.rdoc' ]
23
+ spec.license 'BSD'
22
24
 
23
- self.developer 'Michael Granger', 'ged@FaerieMUD.org'
25
+ spec.developer 'Michael Granger', 'ged@FaerieMUD.org'
24
26
 
25
- self.dependency 'loggability', '~> 0.4'
27
+ spec.dependency 'loggability', '~> 0.4'
26
28
 
27
- self.dependency 'rspec', '~> 2.14', :developer
28
- self.dependency 'simplecov', '~> 0.5', :developer
29
+ spec.dependency 'hoe-deveiate', '~> 0.3', :developer
30
+ spec.dependency 'simplecov', '~> 0.5', :developer
31
+ spec.dependency 'hoe-bundler', '~> 1.2', :developer
29
32
 
30
- self.spec_extras[:licenses] = ["BSD"]
31
- self.spec_extras[:rdoc_options] = ['-f', 'fivefish', '-t', 'Configurability Toolkit']
32
- self.require_ruby_version( '>= 1.9.2' )
33
+ spec.require_ruby_version( '>= 1.9.2' )
33
34
 
34
- self.hg_sign_tags = true if self.respond_to?( :hg_sign_tags= )
35
- self.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
35
+ spec.hg_sign_tags = true if spec.respond_to?( :hg_sign_tags= )
36
+ spec.rdoc_locations << "deveiate:/usr/local/www/public/code/#{remote_rdoc_dir}"
36
37
  end
37
38
 
38
39
  ENV['VERSION'] ||= hoespec.spec.version.to_s
@@ -18,10 +18,10 @@ module Configurability
18
18
 
19
19
 
20
20
  # Library version constant
21
- VERSION = '2.1.0'
21
+ VERSION = '2.1.1'
22
22
 
23
23
  # Version-control revision constant
24
- REVISION = %q$Revision: d27195f9c3df $
24
+ REVISION = %q$Revision: 9d24e71e0018 $
25
25
 
26
26
  require 'configurability/deferredconfig'
27
27
 
@@ -250,7 +250,7 @@ class Configurability::Config
250
250
  else
251
251
  YAML.load( source )
252
252
  end
253
- ihash = symbolify_keys( untaint_values(hash) )
253
+ ihash = symbolify_keys( untaint_hash(hash) )
254
254
  mergedhash = defaults.merge( ihash, &mergefunc )
255
255
 
256
256
  return Configurability::Config::Struct.new( mergedhash )
@@ -283,27 +283,34 @@ class Configurability::Config
283
283
 
284
284
  ### Return a copy of the specified +hash+ with all of its values
285
285
  ### untainted.
286
- def untaint_values( hash )
286
+ def untaint_hash( hash )
287
287
  newhash = {}
288
- hash.each do |key,val|
289
- case val
290
- when Hash
291
- newhash[ key ] = untaint_values( hash[key] )
288
+ hash.each_key do |key|
289
+ newhash[ key ] = untaint_value( hash[key] )
290
+ end
291
+ return newhash
292
+ end
292
293
 
293
- when Array
294
- newval = val.collect {|v| v.dup.untaint}
295
- newhash[ key ] = newval
296
294
 
297
- when NilClass, TrueClass, FalseClass, Numeric, Symbol
298
- newhash[ key ] = val
295
+ ### Return an untainted copy of the specified +val+.
296
+ def untaint_value( val )
297
+ case val
298
+ when Hash
299
+ return untaint_hash( val )
300
+
301
+ when Array
302
+ return val.collect {|v| untaint_value(v) }
303
+
304
+ when NilClass, TrueClass, FalseClass, Numeric, Symbol, Encoding
305
+ return val
299
306
 
307
+ else
308
+ if val.respond_to?( :dup ) && val.respond_to?( :untaint )
309
+ return val.dup.untaint
300
310
  else
301
- newval = val.dup
302
- newval.untaint
303
- newhash[ key ] = newval
311
+ return val
304
312
  end
305
313
  end
306
- return newhash
307
314
  end
308
315
 
309
316
 
@@ -25,6 +25,12 @@ describe Configurability::Config do
25
25
  - values
26
26
  - are
27
27
  - neat
28
+ listofints:
29
+ - 1
30
+ - 2
31
+ - 3
32
+ - 5
33
+ - 7
28
34
  mergekey: Yep.
29
35
  textsection: |-
30
36
  With some text as the value
@@ -104,6 +110,13 @@ describe Configurability::Config do
104
110
  expect( config.section.monkeysubsection? ).to be_false()
105
111
  end
106
112
 
113
+ it "untaints values loaded from a config" do
114
+ yaml = TEST_CONFIG.dup.taint
115
+ config = described_class.new( yaml )
116
+ expect( config.listsection.first ).to_not be_tainted
117
+ expect( config.textsection ).to_not be_tainted
118
+ end
119
+
107
120
 
108
121
  context "a config with nil keys" do
109
122
 
@@ -187,7 +200,7 @@ describe Configurability::Config do
187
200
  end
188
201
 
189
202
  it "provides a human-readable description of itself when inspected" do
190
- expect( config.inspect ).to match( /4 sections/i )
203
+ expect( config.inspect ).to match( /\d+ sections/i )
191
204
  expect( config.inspect ).to match( /mergekey/ )
192
205
  expect( config.inspect ).to match( /textsection/ )
193
206
  expect( config.inspect ).to match( /from memory/i )
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: configurability
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Granger
@@ -30,7 +30,7 @@ cert_chain:
30
30
  6mKCwjpegytE0oifXfF8k75A9105cBnNiMZOe1tXiqYc/exCgWvbggurzDOcRkZu
31
31
  /YSusaiDXHKU2O3Akc3htA==
32
32
  -----END CERTIFICATE-----
33
- date: 2013-08-14 00:00:00.000000000 Z
33
+ date: 2013-11-20 00:00:00.000000000 Z
34
34
  dependencies:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: loggability
@@ -89,19 +89,19 @@ dependencies:
89
89
  - !ruby/object:Gem::Version
90
90
  version: '4.0'
91
91
  - !ruby/object:Gem::Dependency
92
- name: rspec
92
+ name: hoe-deveiate
93
93
  requirement: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - ~>
96
96
  - !ruby/object:Gem::Version
97
- version: '2.14'
97
+ version: '0.3'
98
98
  type: :development
99
99
  prerelease: false
100
100
  version_requirements: !ruby/object:Gem::Requirement
101
101
  requirements:
102
102
  - - ~>
103
103
  - !ruby/object:Gem::Version
104
- version: '2.14'
104
+ version: '0.3'
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: simplecov
107
107
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +116,20 @@ dependencies:
116
116
  - - ~>
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0.5'
119
+ - !ruby/object:Gem::Dependency
120
+ name: hoe-bundler
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: '1.2'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - ~>
131
+ - !ruby/object:Gem::Version
132
+ version: '1.2'
119
133
  - !ruby/object:Gem::Dependency
120
134
  name: hoe
121
135
  requirement: !ruby/object:Gem::Requirement
@@ -170,10 +184,8 @@ licenses:
170
184
  metadata: {}
171
185
  post_install_message:
172
186
  rdoc_options:
173
- - -f
174
- - fivefish
175
- - -t
176
- - Configurability Toolkit
187
+ - --main
188
+ - README.rdoc
177
189
  require_paths:
178
190
  - lib
179
191
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -188,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
200
  version: '0'
189
201
  requirements: []
190
202
  rubyforge_project: configurability
191
- rubygems_version: 2.0.5
203
+ rubygems_version: 2.1.10
192
204
  signing_key:
193
205
  specification_version: 4
194
206
  summary: Configurability is a unified, unintrusive, assume-nothing configuration system
metadata.gz.sig CHANGED
Binary file