Merge lp:~mfisch/lightdm/lightdm-lp999713 into lp:lightdm

Proposed by Matt Fischer
Status: Merged
Merged at revision: 1513
Proposed branch: lp:~mfisch/lightdm/lightdm-lp999713
Merge into: lp:lightdm
Diff against target: 64 lines (+28/-1)
2 files modified
configure.ac (+2/-0)
src/privileges.c (+26/-1)
To merge this branch: bzr merge lp:~mfisch/lightdm/lightdm-lp999713
Reviewer Review Type Date Requested Status
Robert Ancell Pending
Review via email: mp+108867@code.launchpad.net

Description of the change

Fixes 999713: setresgid and setresuid not portable

The patch includes logging which I verified and tested using a VM.

To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'configure.ac'
2--- configure.ac 2012-04-19 04:30:45 +0000
3+++ configure.ac 2012-06-06 03:33:20 +0000
4@@ -21,6 +21,8 @@
5
6 AC_CHECK_HEADERS(security/pam_appl.h, [], AC_MSG_ERROR(PAM not found))
7
8+AC_CHECK_FUNCS(setresgid setresuid)
9+
10 PKG_CHECK_MODULES(LIGHTDM, [
11 glib-2.0 >= 2.24
12 gio-2.0 >= 2.26
13
14=== modified file 'src/privileges.c'
15--- src/privileges.c 2011-09-15 07:29:25 +0000
16+++ src/privileges.c 2012-06-06 03:33:20 +0000
17@@ -12,6 +12,7 @@
18 /* for setres*id() */
19 #define _GNU_SOURCE
20
21+#include <config.h>
22 #include "privileges.h"
23
24 void
25@@ -20,14 +21,38 @@
26 g_return_if_fail (user != NULL);
27
28 g_debug ("Dropping privileges to uid %i", user_get_uid (user));
29+#ifdef HAVE_SETRESGID
30+ g_debug ("Calling setresgid");
31 g_assert (setresgid (user_get_gid (user), user_get_gid (user), -1) == 0);
32+#else
33+ g_assert (setgid (user_get_gid (user)) == 0);
34+ g_assert (setegid (user_get_gid (user)) == 0);
35+#endif
36+#ifdef HAVE_SETRESUID
37+ g_debug ("Calling setresuid");
38 g_assert (setresuid (user_get_uid (user), user_get_uid (user), -1) == 0);
39+#else
40+ g_assert (setuid (user_get_uid (user)) == 0);
41+ g_assert (seteuid (user_get_uid (user)) == 0);
42+#endif
43 }
44
45 void
46 privileges_reclaim (void)
47 {
48 g_debug ("Restoring privileges");
49+#ifdef HAVE_SETRESUID
50+ g_debug ("Calling setresuid");
51 g_assert (setresuid (0, 0, -1) == 0);
52- g_assert (setresgid (0, 0, -1) == 0);
53+#else
54+ g_assert (setuid (0) == 0);
55+ g_assert (seteuid (0) == 0);
56+#endif
57+#ifdef HAVE_SETRESGID
58+ g_debug ("Calling setresgid");
59+ g_assert (setresgid (0, 0, -1) == 0);
60+#else
61+ g_assert (setgid (0) == 0);
62+ g_assert (setegid (0) == 0);
63+#endif
64 }

Subscribers

People subscribed via source and target branches