From 9825bec3ad612eb3ec980cbae3a80f611b4a70a0 Mon Sep 17 00:00:00 2001 From: Nigel Kersten Date: Fri, 24 Jul 2009 17:23:00 -0700 Subject: Fixes #2362. Do not validate users/groups when supplied with numeric uid/gids --- lib/puppet/type/file/group.rb | 6 ++++++ lib/puppet/type/file/owner.rb | 6 ++++++ spec/unit/type/file/group.rb | 5 +++++ spec/unit/type/file/owner.rb | 5 +++++ 4 files changed, 22 insertions(+) diff --git a/lib/puppet/type/file/group.rb b/lib/puppet/type/file/group.rb index 3aeac21ff..e3d7b4ec6 100755 --- a/lib/puppet/type/file/group.rb +++ b/lib/puppet/type/file/group.rb @@ -79,6 +79,12 @@ module Puppet # Determine if the group is valid, and if so, return the GID def validgroup?(value) + begin + number = Integer(value) + return number + rescue ArgumentError + number = nil + end if number = gid(value) return number else diff --git a/lib/puppet/type/file/owner.rb b/lib/puppet/type/file/owner.rb index 15a34a696..1dff59cb3 100755 --- a/lib/puppet/type/file/owner.rb +++ b/lib/puppet/type/file/owner.rb @@ -49,6 +49,12 @@ module Puppet # Determine if the user is valid, and if so, return the UID def validuser?(value) + begin + number = Integer(value) + return number + rescue ArgumentError + number = nil + end if number = uid(value) return number else diff --git a/spec/unit/type/file/group.rb b/spec/unit/type/file/group.rb index 856b05b0d..93d09adb4 100755 --- a/spec/unit/type/file/group.rb +++ b/spec/unit/type/file/group.rb @@ -70,6 +70,11 @@ describe property do @group.must be_insync(10) end + + it "should not validate that groups exist when a group is specified as an integer" do + @group.expects(:gid).never + @group.validgroup?(10) + end it "should fail if it cannot convert a group name to an integer" do @group.expects(:gid).with("foo").returns nil diff --git a/spec/unit/type/file/owner.rb b/spec/unit/type/file/owner.rb index 743e64054..1ea01cbc7 100755 --- a/spec/unit/type/file/owner.rb +++ b/spec/unit/type/file/owner.rb @@ -83,6 +83,11 @@ describe property do @owner.must be_insync(10) end + + it "should not validate that users exist when a user is specified as an integer" do + @owner.expects(:uid).never + @owner.validuser?(10) + end it "should fail if it cannot convert an owner name to an integer" do @owner.expects(:uid).with("foo").returns nil -- cgit