This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Stop making assumptions about uids and gids.
authorBrian Fraser <fraserbn@gmail.com>
Thu, 23 May 2013 03:44:15 +0000 (00:44 -0300)
committerTony Cook <tony@develop-help.com>
Tue, 4 Jun 2013 08:45:38 +0000 (18:45 +1000)
commitdfff4baff950c3688d6f16335fa1e1037bb84bd0
tree93d04ea7777f2ff99152da88b12a87004fdb8671
parentbcbe2b27bd9868685fb7b4a6158b08674d0387cd
Stop making assumptions about uids and gids.

The code dealt rather inconsistently with uids and gids. Some
places assumed that they could be safely stored in UVs, others
in IVs, others in ints; All of them should've been using the
macros from config.h instead. Similarly, code that created
SVs or pushed values into the stack was also making incorrect
assumptions -- As a point of reference, only pp_stat did the
right thing:

 #if Uid_t_size > IVSIZE
mPUSHn(PL_statcache.st_uid);
 #else
 #   if Uid_t_sign <= 0
mPUSHi(PL_statcache.st_uid);
 #   else
mPUSHu(PL_statcache.st_uid);
 #   endif
 #endif

The other places were potential bugs, and some were even causing
warnings in some unusual OSs, like haiku or qnx.

This commit ammends the situation by introducing four new macros,
SvUID(), sv_setuid(), SvGID(), and sv_setgid(), and using them
where needed.
handy.h
iperlsys.h
mg.c
perl.c
pp_hot.c
pp_sys.c
taint.c