]> code.delx.au - pulseaudio/blobdiff - polyp/caps.c
* use setresuid() instead of setruid() if available
[pulseaudio] / polyp / caps.c
index 34d97eb56ddb9d5af8171f1c5e2a5d064b1f50d7..93fca89f1f17b4571553bc0782b4c485ccdb7f2a 100644 (file)
@@ -23,6 +23,9 @@
 #include <config.h>
 #endif
 
+/* setresuid() is only available on GNU */
+#define _GNU_SOURCE
+
 #include <assert.h>
 #include <unistd.h>
 #include <errno.h>
@@ -41,13 +44,17 @@ void pa_drop_root(void) {
     
     if (uid == 0 || geteuid() != 0)
         return;
-    
-/*     pa_log(__FILE__": dropping root rights.\n"); */
-    
-    setreuid(uid, uid);
 
-/*    setuid(uid);
-    seteuid(uid);*/
+    /*     pa_log(__FILE__": dropping root rights.\n"); */
+
+#if defined(HAVE_SETRESUID)
+    setresuid(uid, uid, uid);
+#elif defined(HAVE_SETREUID)
+    setreuid(uid, uid);
+#else
+    setuid(uid);
+    seteuid(uid);
+#endif
 }
 
 #ifdef HAVE_SYS_CAPABILITY_H