1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
*** hints/freebsd.sh Mon Feb 12 11:52:51 1996
--- hints/freebsd.sh Sat Jun 1 19:08:28 1996
***************
*** 47,54 ****
# It does not covert all 2.1-current versions as the output of uname
# changed a few times.
#
! 2.0.5*|2.0-built*|2.1*)
usevfork='true'
;;
#
# Guesses at what will be needed after 2.1
--- 47,64 ----
# It does not covert all 2.1-current versions as the output of uname
# changed a few times.
#
! # Even though seteuid/setegid are available, they've been turned off
! # because perl isn't coded with saved set[ug]id variables in mind.
! # In addition, a small patch is requried to suidperl to avoid a security
! # problem with FreeBSD.
! #
! 2.0.5*|2.0-built*|2.1*|2.2*)
usevfork='true'
+ d_dosuid='define'
+ d_setregid='define'
+ d_setreuid='define'
+ d_setegid='undef'
+ d_seteuid='undef'
;;
#
# Guesses at what will be needed after 2.1
--- perl.c.orig Tue Feb 27 13:30:44 1996
+++ perl.c Sun Jun 2 09:22:34 1996
@@ -1606,10 +1606,10 @@
(void)setegid(statbuf.st_gid);
#else
#ifdef HAS_SETREGID
- (void)setregid((Gid_t)-1,statbuf.st_gid);
+ (void)setregid((Gid_t)gid,statbuf.st_gid);
#else
#ifdef HAS_SETRESGID
- (void)setresgid((Gid_t)-1,statbuf.st_gid,(Gid_t)-1);
+ (void)setresgid((Gid_t)gid,statbuf.st_gid,(Gid_t)gid);
#else
setgid(statbuf.st_gid);
#endif
@@ -1624,10 +1624,10 @@
(void)seteuid(statbuf.st_uid); /* all that for this */
#else
#ifdef HAS_SETREUID
- (void)setreuid((Uid_t)-1,statbuf.st_uid);
+ (void)setreuid((Uid_t)uid,statbuf.st_uid);
#else
#ifdef HAS_SETRESUID
- (void)setresuid((Uid_t)-1,statbuf.st_uid,(Uid_t)-1);
+ (void)setresuid((Uid_t)uid,statbuf.st_uid,(Uid_t)uid);
#else
setuid(statbuf.st_uid);
#endif
@@ -1641,10 +1641,10 @@
(void)seteuid((Uid_t)uid);
#else
#ifdef HAS_SETREUID
- (void)setreuid((Uid_t)-1,(Uid_t)uid);
+ (void)setreuid((Uid_t)uid,(Uid_t)uid);
#else
#ifdef HAS_SETRESUID
- (void)setresuid((Uid_t)-1,(Uid_t)uid,(Uid_t)-1);
+ (void)setresuid((Uid_t)uid,(Uid_t)uid,(Uid_t)uid);
#else
setuid((Uid_t)uid);
#endif
|