never stay root after startup, even if we don't have capabilites

git-svn-id: file:///home/lennart/svn/public/pulseaudio/branches/lennart@1678 fefdeb5f-60dc-0310-8127-8f9354f1896f
This commit is contained in:
Lennart Poettering 2007-08-16 19:48:49 +00:00
parent 5e93816e1b
commit 876e682ad8

View file

@ -336,10 +336,19 @@ int main(int argc, char *argv[]) {
#endif #endif
if (suid_root) { if (suid_root) {
if (pa_limit_caps() > 0) /* Drop all capabilities except CAP_SYS_NICE */
/* We managed to drop capabilities except the needed pa_limit_caps();
* ones. Hence we can drop the uid. */
pa_drop_root(); /* Drop priviliges, but keep CAP_SYS_NICE */
pa_drop_root();
/* After dropping root, the effective set is reset, hence,
* let's raise it again */
pa_limit_caps();
/* When capabilities are not supported we will not be able to
* aquire RT sched anymore. But yes, that's the way it is. It
* is just too risky tun let PA run as root all the time. */
} }
setlocale(LC_ALL, ""); setlocale(LC_ALL, "");
@ -386,7 +395,7 @@ int main(int argc, char *argv[]) {
if (conf->high_priority && conf->cmd == PA_CMD_DAEMON) if (conf->high_priority && conf->cmd == PA_CMD_DAEMON)
pa_raise_priority(); pa_raise_priority();
if (suid_root) { if (suid_root && conf->cmd != PA_CMD_DAEMON) {
pa_drop_caps(); pa_drop_caps();
pa_drop_root(); pa_drop_root();
} }