#include <errno.h>
#include <string.h>
#include <sys/types.h>
+
+#include <pulse/i18n.h>
+
#include <pulsecore/macro.h>
+#include <pulsecore/core-error.h>
+#include <pulsecore/log.h>
#ifdef HAVE_SYS_CAPABILITY_H
#include <sys/capability.h>
#include <sys/prctl.h>
#endif
-#include <pulsecore/core-error.h>
-
-#include <pulsecore/log.h>
-
#include "caps.h"
/* Glibc <= 2.2 has broken unistd.h */
if (uid == 0 || geteuid() != 0)
return;
- pa_log_info("Dropping root priviliges.");
+ pa_log_info(_("Dropping root priviliges."));
#if defined(HAVE_SETRESUID)
pa_assert_se(setresuid(uid, uid, uid) >= 0);
* that */
pa_drop_caps();
else
- pa_log_info("Limited capabilities successfully to CAP_SYS_NICE.");
+ pa_log_info(_("Limited capabilities successfully to CAP_SYS_NICE."));
pa_assert_se(cap_free(caps) == 0);
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 builds.*/
+
+ if (pa_in_valgrind() && !pa_have_caps())
+ return;
+#endif
+
pa_assert_se(prctl(PR_SET_KEEPCAPS, 0, 0, 0, 0) == 0);
pa_assert_se(caps = cap_init());
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);