From: Max Martin <m...@puppetlabs.com>

Settings#writesub was not checking the type of the mode value passed in
from the defaults, causing it to pass a string for mode to File.open,
leading to failures. This commit resolves that issue.

Paired-with: Matt Robinson <m...@puppetlabs.com>
Signed-off-by: Matt Robinson <m...@puppetlabs.com>
---
 lib/puppet/util.rb              |    1 -
 lib/puppet/util/settings.rb     |    2 +-
 spec/unit/util/settings_spec.rb |   11 +++++++++++
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb
index d06f448..34c6ec1 100644
--- a/lib/puppet/util.rb
+++ b/lib/puppet/util.rb
@@ -29,7 +29,6 @@ module Util
     end
   end
 
-  
   def self.synchronize_on(x,type)
     sync_object,users = 0,1
     begin
diff --git a/lib/puppet/util/settings.rb b/lib/puppet/util/settings.rb
index f243b86..4559e9a 100644
--- a/lib/puppet/util/settings.rb
+++ b/lib/puppet/util/settings.rb
@@ -721,7 +721,7 @@ if @config.include?(:run_mode)
     end
 
     Puppet::Util::SUIDManager.asuser(*chown) do
-      mode = obj.mode || 0640
+      mode = obj.mode ? obj.mode.to_i : 0640
       args << "w" if args.empty?
 
       args << mode
diff --git a/spec/unit/util/settings_spec.rb b/spec/unit/util/settings_spec.rb
index 07b712c..888de15 100755
--- a/spec/unit/util/settings_spec.rb
+++ b/spec/unit/util/settings_spec.rb
@@ -1,6 +1,7 @@
 #!/usr/bin/env ruby
 
 require File.dirname(__FILE__) + '/../../spec_helper'
+require 'ostruct'
 
 describe Puppet::Util::Settings do
   describe "when specifying defaults" do
@@ -1105,4 +1106,14 @@ describe Puppet::Util::Settings do
 
     it "should cache the result"
   end
+
+  describe "#writesub" do
+    it "should only pass valid arguments to File.open" do
+      settings = Puppet::Util::Settings.new
+      
settings.stubs(:get_config_file_default).with(:privatekeydir).returns(OpenStruct.new(:mode
 => "750"))
+
+      File.expects(:open).with("/path/to/keydir", "w", 750).returns true
+      settings.writesub(:privatekeydir, "/path/to/keydir")
+    end
+  end
 end
-- 
1.7.3.1

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Developers" group.
To post to this group, send email to puppet-dev@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to