Project

General

Profile

Actions

Backport #1068

closed

Ruby Cannot Handle Some UIDs

Added by JEG2 (James Gray) over 15 years ago. Updated over 7 years ago.

Status:
Closed

Description

=begin
This shows the main problem:

$ sudo ruby -r etc -e 'n = Etc.getpwnam("nobody"); p n.uid; Process.uid = n.uid'
Password:
ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-darwin9.4.0]
4294967294
-e:1:in uid=': bignum too big to convert into long' (RangeError)
from -e:1

The real UID for the nobody user on my system (Mac OS X 10.5.6) is -2. Thus it seems at least some systems use signed UID's and Ruby can't handle that.

The above example is from Ruby 1.8.6. Ruby 1.9 does seem to properly switch users, but it still shows the UID's incorrectly:

$ sudo ruby_dev -v -r etc -e 'n = Etc.getpwnam("nobody"); p n.uid; Process.uid = n.uid; p Process.uid; p Etc.getpwuid(Process.uid)'
ruby 1.9.1 (2008-12-30 patchlevel-0 revision 21203) [i386-darwin9.6.0]
4294967294
4294967294
#<struct Struct::Passwd name="nobody", passwd="*", uid=4294967294, gid=4294967294, gecos="Unprivileged User", dir="/var/empty", shell="/usr/bin/false", change=0, uclass="", expire=0>
=end

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0