]> code.delx.au - pulseaudio/blobdiff - src/daemon/caps.c
Add support for FreeBSD <sys/capability.h>
[pulseaudio] / src / daemon / caps.c
index 36b76a90acfb22a410f409699001bbbfca8f2b91..68b79cebd2e53943e2ec8355f20a9130e80702f9 100644 (file)
@@ -72,20 +72,26 @@ void pa_drop_root(void) {
     pa_assert_se(geteuid() == uid);
     pa_assert_se(getgid() == gid);
     pa_assert_se(getegid() == gid);
-#endif
 
     if (uid != 0)
         pa_drop_caps();
+#endif
 }
 
 void pa_drop_caps(void) {
 #ifdef HAVE_SYS_CAPABILITY_H
+#ifdef __linux
     cap_t caps;
     pa_assert_se(caps = cap_init());
     pa_assert_se(cap_clear(caps) == 0);
     pa_assert_se(cap_set_proc(caps) == 0);
     pa_assert_se(cap_free(caps) == 0);
+#elif __FreeBSD__
+    pa_assert_se (cap_enter () == 0);
 #else
+#error Don't know how to do capabilities on your system.  Please send a patch.
+#endif /* __linux */
+#else /* HAVE_SYS_CAPABILITY_H */
     pa_log_warn("Normally all extra capabilities would be dropped now, but "
                 "that's impossible because this Pulseaudio was built without "
                 "libcap support.");