summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorajax <ajax@980ebf18-57e1-0310-9a29-db15c13687c0>2006-09-27 00:53:21 +0000
committerajax <ajax@980ebf18-57e1-0310-9a29-db15c13687c0>2006-09-27 00:53:21 +0000
commitfd9b2f6293b0d4c9a6d1296ea8567701352aec67 (patch)
tree3f5b95666047b7a5a3fa7585906d089cec961495
parentdb7d7848fc0b64601c1ac375a92a8709b39a42f8 (diff)
downloadpuppet-fd9b2f6293b0d4c9a6d1296ea8567701352aec67.tar.gz
puppet-fd9b2f6293b0d4c9a6d1296ea8567701352aec67.tar.xz
puppet-fd9b2f6293b0d4c9a6d1296ea8567701352aec67.zip
File types were dying silently on OS X when the group specified in the manifest was not a valid group.
The code now generates some errors, but current behavior doesn't raise fatal exceptions git-svn-id: https://reductivelabs.com/svn/puppet/trunk@1695 980ebf18-57e1-0310-9a29-db15c13687c0
-rw-r--r--lib/puppet/suidmanager.rb10
-rw-r--r--lib/puppet/util.rb2
-rw-r--r--test/puppet/tc_suidmanager.rb8
3 files changed, 16 insertions, 4 deletions
diff --git a/lib/puppet/suidmanager.rb b/lib/puppet/suidmanager.rb
index 555543843..a431e1456 100644
--- a/lib/puppet/suidmanager.rb
+++ b/lib/puppet/suidmanager.rb
@@ -65,12 +65,20 @@ module Puppet
def asuser(new_euid=nil, new_egid=nil)
old_egid = old_euid = nil
if new_egid
- new_egid = Puppet::Util.uid(new_egid)
+ saved_state_egid = new_egid
+ new_egid = Puppet::Util.gid(new_egid)
+ if new_egid == nil
+ raise Puppet::Error, "Invalid group: %s" % saved_state_egid
+ end
old_egid = self.egid
self.egid = new_egid
end
if new_euid
+ saved_state_euid = new_euid
new_euid = Puppet::Util.uid(new_euid)
+ if new_euid == nil
+ raise Puppet::Error, "Invalid user: %s" % saved_state_euid
+ end
old_euid = self.euid
self.euid = new_euid
end
diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb
index fea1e68a6..5f8d6f31a 100644
--- a/lib/puppet/util.rb
+++ b/lib/puppet/util.rb
@@ -107,7 +107,7 @@ module Util
end
gid = nil
obj = nil
-
+
# We want to look the group up either way
if group.is_a?(Integer)
# If this doesn't find anything
diff --git a/test/puppet/tc_suidmanager.rb b/test/puppet/tc_suidmanager.rb
index fc56c6072..bd116bda6 100644
--- a/test/puppet/tc_suidmanager.rb
+++ b/test/puppet/tc_suidmanager.rb
@@ -45,7 +45,12 @@ class TestSUIDManager < Test::Unit::TestCase
assert_uid_gid(user.uid, user.gid, tempfile)
end
end
-
+ def test_utiluid
+ user = nonrootuser
+ if @run
+ assert_not_equal(nil, Puppet::Util.uid(user))
+ end
+ end
def test_asuser
if @run
user = nonrootuser
@@ -57,7 +62,6 @@ class TestSUIDManager < Test::Unit::TestCase
gid = Puppet::SUIDManager.egid
end
end
-
assert_equal(user.uid, uid)
assert_equal(user.gid, gid)
end