blob: 56a5074e18a790bf5e20c2a15ed432b99c59ccf8 (
plain) (
blame)
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
|
--- daemon/slave.c.orig Fri May 6 17:05:17 2005
+++ daemon/slave.c Sun Jun 26 15:53:00 2005
@@ -4014,6 +4014,10 @@
}
+ /*
+ * Set euid, gid to user before testing for user's $HOME since root
+ * does not always have access to the user's $HOME directory.
+ */
if G_UNLIKELY (setegid (pwent->pw_gid) != 0 ||
seteuid (pwent->pw_uid) != 0) {
gdm_error ("Cannot set effective user/group id");
@@ -4033,6 +4037,7 @@
"you use a failsafe session."),
ve_sure_string (pwent->pw_dir));
+ /* Set euid, egid to root:gdm to manage user interaction */
seteuid (0);
setegid (GdmGroupId);
@@ -4051,19 +4056,20 @@
g_free (msg);
+ /* Reset euid, egid back to user */
+ if G_UNLIKELY (setegid (pwent->pw_gid) != 0 ||
+ seteuid (pwent->pw_uid) != 0) {
+ gdm_error ("Cannot set effective user/group id");
+ gdm_verify_cleanup (d);
+ session_started = FALSE;
+ return;
+ }
+
home_dir_ok = FALSE;
home_dir = "/";
} else {
home_dir_ok = TRUE;
home_dir = pwent->pw_dir;
- }
-
- if G_UNLIKELY (setegid (pwent->pw_gid) != 0 ||
- seteuid (pwent->pw_uid) != 0) {
- gdm_error ("Cannot set effective user/group id");
- gdm_verify_cleanup (d);
- session_started = FALSE;
- return;
}
if G_LIKELY (home_dir_ok) {
|