summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-09-26 15:30:24 +0000
committerluke <luke@980ebf18-57e1-0310-9a29-db15c13687c0>2006-09-26 15:30:24 +0000
commitdb7d7848fc0b64601c1ac375a92a8709b39a42f8 (patch)
tree47cf3ded00949938480a94d8cd5f836b41e0c77c
parentdfef7e1647a0b87f8010c53e138efd9ecba2871b (diff)
downloadpuppet-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.rb36
-rw-r--r--lib/puppet/type/state.rb5
-rw-r--r--test/lib/puppettest.rb1
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