I'm going to echo Luke on this one. +1, but needs some serious
cross-platform verification before release.

On Tue, May 4, 2010 at 9:02 PM, Luke Kanies <[email protected]> wrote:

> +1 for the testing branch, anyway.
>
> Obviously a potentially large change so needs plenty of testing.
>
>
> On May 4, 2010, at 4:10 PM, Markus Roberts wrote:
>
>  There are several issues with changing the real, effective, and saved
>> group
>> and user ids in different environments (which methods to call, in what
>> order,
>> etc).  While the code being replaced by this patch appeared to work for
>> Linux,
>> Solaris, and (with a special case test) Darwin; it was failing under AIX
>> and
>> may have had edge-case problems under the others.
>>
>> Ruby back to 1.8.1 has supported a higher level interface that deals with
>> the
>> problem and captures a broader range of OSes; it's a single call for group
>> and
>> one for user--the details of rid/eid/svid, etc ordering are handled
>> internally.
>> Switching to that simplifies our code and should improve/unify our support
>> of
>> various OSes.
>>
>> Signed-off-by: Markus Roberts <[email protected]>
>> ---
>> lib/puppet/util.rb |   21 ++++-----------------
>> 1 files changed, 4 insertions(+), 17 deletions(-)
>>
>> diff --git a/lib/puppet/util.rb b/lib/puppet/util.rb
>> index 503c02b..73ff6bb 100644
>> --- a/lib/puppet/util.rb
>> +++ b/lib/puppet/util.rb
>> @@ -285,28 +285,15 @@ module Util
>>            # Child process executes this
>>            Process.setsid
>>            begin
>> -                if arguments[:stdinfile]
>> -                    $stdin.reopen(arguments[:stdinfile])
>> -                else
>> -                    $stdin.reopen("/dev/null")
>> -                end
>> +                $stdin.reopen(arguments[:stdinfile] || "/dev/null")
>>                $stdout.reopen(output_file)
>>                $stderr.reopen(error_file)
>>
>>                3.upto(256){|fd| IO::new(fd).close rescue nil}
>> -                if arguments[:gid]
>> -                    Process.egid = arguments[:gid]
>> -                    Process.gid = arguments[:gid] unless @@os == "Darwin"
>> -                end
>> -                if arguments[:uid]
>> -                    Process.euid = arguments[:uid]
>> -                    Process.uid = arguments[:uid] unless @@os == "Darwin"
>> -                end
>> +                Process::GID.change_privilege arguments[:gid] if
>> arguments[:gid]
>> +                Process::UID.change_privilege arguments[:uid] if
>> arguments[:uid]
>>                ENV['LANG'] = ENV['LC_ALL'] = ENV['LC_MESSAGES'] =
>> ENV['LANGUAGE'] = 'C'
>> -                if command.is_a?(Array)
>> -                    Kernel.exec(*command)
>> -                else
>> -                    Kernel.exec(command)
>> +                Kernel.exec(*command)
>>                end
>>            rescue => detail
>>                puts detail.to_s
>> --
>> 1.6.4
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Puppet Developers" group.
>> To post to this group, send email to [email protected].
>> To unsubscribe from this group, send email to
>> [email protected]<puppet-dev%[email protected]>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/puppet-dev?hl=en.
>>
>>
>
> --
> Never regret. If it's good, it's wonderful. If it's bad, it's
> experience. -- Victoria Holt
> ---------------------------------------------------------------------
> Luke Kanies  -|-   http://puppetlabs.com   -|-   +1(615)594-8199
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Developers" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<puppet-dev%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/puppet-dev?hl=en.
>
>

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

Reply via email to