diff options
| author | Lennart Poettering <lennart@poettering.net> | 2008-08-03 16:16:22 +0200 | 
|---|---|---|
| committer | Lennart Poettering <lennart@poettering.net> | 2008-08-03 16:29:55 +0200 | 
| commit | 32f63f2a61e91b37e1725923f3894ee41d8a8cb7 (patch) | |
| tree | 1f230a82bb74a8ff56dbf8c405f7e174a3c1f802 /src | |
| parent | 06712c2a86cb829aa1d7de47bf9a291a157d45b4 (diff) | |
allow running of PA with a valgring that doesn't know cap_set_caps
Diffstat (limited to 'src')
| -rw-r--r-- | src/daemon/caps.c | 13 | 
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);  | 
