← Back to team overview

ayatana-commits team mailing list archive

[Branch ~xsplash-team/xsplash/trunk] Rev 81: merge lp:~bratsche/xsplash/setgid to fix #439268

 

Merge authors:
  Cody Russell (bratsche)
Related merge proposals:
  https://code.launchpad.net/~bratsche/xsplash/setgid/+merge/12788
  proposed by: Cody Russell (bratsche)
  review: Approve - Ted Gould (ted)
------------------------------------------------------------
revno: 81 [merge]
committer: Cody Russell <crussell@xxxxxxxxxxxxx>
branch nick: xsplash
timestamp: Mon 2009-10-05 09:50:27 -0400
message:
  merge lp:~bratsche/xsplash/setgid to fix #439268
modified:
  src/xsplash.c


--
lp:xsplash
https://code.launchpad.net/~xsplash-team/xsplash/trunk

Your team ayatana-commits is subscribed to branch lp:xsplash.
To unsubscribe from this branch go to https://code.launchpad.net/~xsplash-team/xsplash/trunk/+edit-subscription.
=== modified file 'src/xsplash.c'
--- src/xsplash.c	2009-10-01 20:56:55 +0000
+++ src/xsplash.c	2009-10-04 00:13:32 +0000
@@ -17,10 +17,12 @@
  *    Cody Russell <crussell@xxxxxxxxxxxxx>
  */
 
+#define _GNU_SOURCE
+#include <unistd.h>
+
 #include <stdlib.h>
 #include <math.h>
 #include <string.h>
-#include <unistd.h>
 #include <pwd.h>
 #include <dirent.h>
 
@@ -913,14 +915,13 @@
 int
 main (int argc, char *argv[])
 {
-  XsplashServer *server;
-  GError *error = NULL;
-  GOptionContext *context;
+  XsplashServer   *server;
+  GError          *error = NULL;
+  GOptionContext  *context;
   DBusGConnection *system_bus;
   DBusGProxy      *bus_proxy;
   guint            nameret = 0;
-  struct passwd *pwd;
-  uid_t uid;
+  struct passwd   *pwd;
 
   pwd = getpwnam (XSPLASH_USER);
   if (pwd == NULL)
@@ -929,9 +930,17 @@
       return 1;
     }
 
-  uid = pwd->pw_uid;
+  if (setresgid (pwd->pw_gid, pwd->pw_gid, pwd->pw_gid))
+    {
+      g_error ("Failed to setresgid to `%s'", XSPLASH_USER);
+      return 1;
+    }
 
-  setuid (uid);
+  if (setresuid (pwd->pw_uid, pwd->pw_uid, pwd->pw_uid))
+    {
+      g_error ("Failed to setresuid to `%s'", XSPLASH_USER);
+      return 1;
+    }
 
   context = g_option_context_new ("xsplash");
   g_option_context_add_main_entries (context,