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
=== modified file 'configure.ac'
--- configure.ac 2012-04-19 04:30:45 +0000
+++ configure.ac 2012-06-06 03:33:20 +0000
@@ -21,6 +21,8 @@
2121
22AC_CHECK_HEADERS(security/pam_appl.h, [], AC_MSG_ERROR(PAM not found))22AC_CHECK_HEADERS(security/pam_appl.h, [], AC_MSG_ERROR(PAM not found))
2323
24AC_CHECK_FUNCS(setresgid setresuid)
25
24PKG_CHECK_MODULES(LIGHTDM, [26PKG_CHECK_MODULES(LIGHTDM, [
25 glib-2.0 >= 2.2427 glib-2.0 >= 2.24
26 gio-2.0 >= 2.2628 gio-2.0 >= 2.26
2729
=== modified file 'src/privileges.c'
--- src/privileges.c 2011-09-15 07:29:25 +0000
+++ src/privileges.c 2012-06-06 03:33:20 +0000
@@ -12,6 +12,7 @@
12/* for setres*id() */12/* for setres*id() */
13#define _GNU_SOURCE13#define _GNU_SOURCE
1414
15#include <config.h>
15#include "privileges.h"16#include "privileges.h"
1617
17void18void
@@ -20,14 +21,38 @@
20 g_return_if_fail (user != NULL);21 g_return_if_fail (user != NULL);
2122
22 g_debug ("Dropping privileges to uid %i", user_get_uid (user));23 g_debug ("Dropping privileges to uid %i", user_get_uid (user));
24#ifdef HAVE_SETRESGID
25 g_debug ("Calling setresgid");
23 g_assert (setresgid (user_get_gid (user), user_get_gid (user), -1) == 0);26 g_assert (setresgid (user_get_gid (user), user_get_gid (user), -1) == 0);
27#else
28 g_assert (setgid (user_get_gid (user)) == 0);
29 g_assert (setegid (user_get_gid (user)) == 0);
30#endif
31#ifdef HAVE_SETRESUID
32 g_debug ("Calling setresuid");
24 g_assert (setresuid (user_get_uid (user), user_get_uid (user), -1) == 0);33 g_assert (setresuid (user_get_uid (user), user_get_uid (user), -1) == 0);
34#else
35 g_assert (setuid (user_get_uid (user)) == 0);
36 g_assert (seteuid (user_get_uid (user)) == 0);
37#endif
25}38}
2639
27void40void
28privileges_reclaim (void)41privileges_reclaim (void)
29{42{
30 g_debug ("Restoring privileges");43 g_debug ("Restoring privileges");
44#ifdef HAVE_SETRESUID
45 g_debug ("Calling setresuid");
31 g_assert (setresuid (0, 0, -1) == 0);46 g_assert (setresuid (0, 0, -1) == 0);
32 g_assert (setresgid (0, 0, -1) == 0); 47#else
48 g_assert (setuid (0) == 0);
49 g_assert (seteuid (0) == 0);
50#endif
51#ifdef HAVE_SETRESGID
52 g_debug ("Calling setresgid");
53 g_assert (setresgid (0, 0, -1) == 0);
54#else
55 g_assert (setgid (0) == 0);
56 g_assert (setegid (0) == 0);
57#endif
33}58}

Subscribers

People subscribed via source and target branches