http://www.perlmonks.org?node_id=614754


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

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