summaryrefslogtreecommitdiffstats
path: root/src/daemon/caps.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2008-08-03 16:16:22 +0200
committerLennart Poettering <lennart@poettering.net>2008-08-03 16:29:55 +0200
commit32f63f2a61e91b37e1725923f3894ee41d8a8cb7 (patch)
tree1f230a82bb74a8ff56dbf8c405f7e174a3c1f802 /src/daemon/caps.c
parent06712c2a86cb829aa1d7de47bf9a291a157d45b4 (diff)
allow running of PA with a valgring that doesn't know cap_set_caps
Diffstat (limited to 'src/daemon/caps.c')
-rw-r--r--src/daemon/caps.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/daemon/caps.c b/src/daemon/caps.c
index ae07119c..8a49e373 100644
--- a/src/daemon/caps.c
+++ b/src/daemon/caps.c
@@ -109,6 +109,14 @@ void pa_limit_caps(void) {
void pa_drop_caps(void) {
cap_t caps;
+#ifndef __OPTIMIZE__
+ /* Valgrind doesn't not know set_caps, so we bypass it here -- but
+ * only in development builts.*/
+
+ if (getenv("VALGRIND") && !pa_have_caps())
+ return;
+#endif
+
pa_assert_se(prctl(PR_SET_KEEPCAPS, 0, 0, 0, 0) == 0);
pa_assert_se(caps = cap_init());
@@ -123,7 +131,12 @@ pa_bool_t pa_have_caps(void) {
cap_t caps;
cap_flag_value_t flag = CAP_CLEAR;
+#ifdef __OPTIMIZE__
pa_assert_se(caps = cap_get_proc());
+#else
+ if (!(caps = cap_get_proc()))
+ return FALSE;
+#endif
pa_assert_se(cap_get_flag(caps, CAP_SYS_NICE, CAP_EFFECTIVE, &flag) >= 0);
pa_assert_se(cap_free(caps) == 0);