diff options
author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-09-26 15:30:24 +0000 |
---|---|---|
committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-09-26 15:30:24 +0000 |
commit | db7d7848fc0b64601c1ac375a92a8709b39a42f8 (patch) | |
tree | 47cf3ded00949938480a94d8cd5f836b41e0c77c | |
parent | dfef7e1647a0b87f8010c53e138efd9ecba2871b (diff) | |
download | puppet-db7d7848fc0b64601c1ac375a92a8709b39a42f8.tar.gz puppet-db7d7848fc0b64601c1ac375a92a8709b39a42f8.tar.xz puppet-db7d7848fc0b64601c1ac375a92a8709b39a42f8.zip |
Fixing SUIDManager#asuser so that it only resets egid and euid if they were changed
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1693 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r-- | lib/puppet/suidmanager.rb | 36 | ||||
-rw-r--r-- | lib/puppet/type/state.rb | 5 | ||||
-rw-r--r-- | test/lib/puppettest.rb | 1 |
3 files changed, 21 insertions, 21 deletions
diff --git a/lib/puppet/suidmanager.rb b/lib/puppet/suidmanager.rb index abe99c8b2..555543843 100644 --- a/lib/puppet/suidmanager.rb +++ b/lib/puppet/suidmanager.rb @@ -63,28 +63,26 @@ module Puppet module_function :system def asuser(new_euid=nil, new_egid=nil) - begin - old_egid = old_euid = nil - if new_egid - new_egid = Puppet::Util.uid(new_egid) - old_egid = self.egid - self.egid = new_egid - end - if new_euid - new_euid = Puppet::Util.uid(new_euid) - old_euid = self.euid - self.euid = new_euid - end - - output = yield - - output - ensure - self.egid = old_egid - self.euid = old_euid + old_egid = old_euid = nil + if new_egid + new_egid = Puppet::Util.uid(new_egid) + old_egid = self.egid + self.egid = new_egid end + if new_euid + new_euid = Puppet::Util.uid(new_euid) + old_euid = self.euid + self.euid = new_euid + end + + return yield + ensure + self.egid = old_egid if old_egid + self.euid = old_euid if old_euid end module_function :asuser end end + +# $Id$ diff --git a/lib/puppet/type/state.rb b/lib/puppet/type/state.rb index e5aa3b1b6..26410493e 100644 --- a/lib/puppet/type/state.rb +++ b/lib/puppet/type/state.rb @@ -260,8 +260,9 @@ class State < Puppet::Parameter if Puppet[:trace] puts detail.backtrace end - self.fail "Could not set %s on %s: %s" % - [value, self.class.name, detail] + error = Puppet::Error.new("Could not set %s on %s: %s" % + [value, self.class.name, detail], @parent.line, @parent.file) + error.set_backtrace detail.backtrace end elsif ary = self.class.match?(value) # FIXME It'd be better here to define a method, so that diff --git a/test/lib/puppettest.rb b/test/lib/puppettest.rb index 4fa7a676f..e8b328de3 100644 --- a/test/lib/puppettest.rb +++ b/test/lib/puppettest.rb @@ -103,6 +103,7 @@ module PuppetTest #end Puppet[:ignoreschedules] = true + Puppet[:trace] = true end def tempfile |