in reply to Re: EUID cannot be set
in thread EUID cannot be set

Mmm, I did in fact check that:

linux: demotion to sys(4294967294) failed: Bad file descriptor (euid: +-2) aix: demotion to nobody(4294967294) failed: (euid: -2)

Niel

Replies are listed 'Best First'.
Re^3: EUID cannot be set
by mr_mischief (Monsignor) on May 10, 2007 at 20:19 UTC
    Note on AIX's nobody user for Exim
    Services for Unix blog

    It seems this is not overflow. It's just a representation in one place using an unsigned value and in another using a signed value.

    Considering there are 4,294,967,296 values in a 32-bit integer and that the signed number would be in two's complement if negative, -2 is exactly the same as 4294967294.

    As a matter of fact, I believe your EUID is being set. It's just not being set to the right interpretation of the number. I suggest you ponder this code:

    #!/usr/bin/perl -- use strict; use warnings; my $nobody = 4294967294; print $nobody . "\n"; $nobody = pack 'I', -2; $nobody = unpack 'I', $nobody; print $nobody . "\n";


    Christopher E. Stith