summaryrefslogtreecommitdiff
path: root/utils/perldoc.PL
diff options
context:
space:
mode:
Diffstat (limited to 'utils/perldoc.PL')
-rw-r--r--utils/perldoc.PL10
1 files changed, 8 insertions, 2 deletions
diff --git a/utils/perldoc.PL b/utils/perldoc.PL
index ea381a48b7..62a82f381f 100644
--- a/utils/perldoc.PL
+++ b/utils/perldoc.PL
@@ -170,8 +170,14 @@ if (!($Is_VMS || $Is_MSWin32 || $Is_Dos || $Is_OS2) && ($> == 0 || $< == 0)
$id = eval { getpwnam("nouser") } unless defined $id;
$id = -2 unless defined $id;
eval {
- $> = $id; # must do this one first!
- $< = $id;
+ # According to Stevens' APUE and various
+ # (BSD, Solaris, HP-UX) man pages setting
+ # the real uid first and effective uid second
+ # is the way to go if one wants to drop privileges,
+ # because if one changes into an effective uid of
+ # non-zero, one cannot change the real uid any more.
+ $< = $id; # real uid
+ $> = $id; # effective uid
};
last if !$@ && $< && $>;
}