summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2009-09-02 00:42:54 +0200
committerLennart Poettering <lennart@poettering.net>2009-09-02 00:42:54 +0200
commita8c0f65faecd7058de3bd704ed90985ae2c842f0 (patch)
treedb5571ea2832ea488ec5057c07f02262dd17c503
parent5f929963d12c70193a923d620177125d8608f18a (diff)
daemon: clean up environment when forking off children
-rw-r--r--src/daemon/main.c7
-rw-r--r--src/pulsecore/start-child.c5
2 files changed, 10 insertions, 2 deletions
diff --git a/src/daemon/main.c b/src/daemon/main.c
index e44892da..e22e465a 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -706,7 +706,7 @@ int main(int argc, char *argv[]) {
#endif
}
- pa_set_env("PULSE_INTERNAL", "1");
+ pa_set_env_and_record("PULSE_INTERNAL", "1");
pa_assert_se(chdir("/") == 0);
umask(0022);
@@ -721,7 +721,7 @@ int main(int argc, char *argv[]) {
if (change_user() < 0)
goto finish;
- pa_set_env("PULSE_SYSTEM", conf->system_instance ? "1" : "0");
+ pa_set_env_and_record("PULSE_SYSTEM", conf->system_instance ? "1" : "0");
pa_log_info(_("This is PulseAudio %s"), PACKAGE_VERSION);
pa_log_debug(_("Compilation host: %s"), CANONICAL_HOST);
@@ -968,6 +968,9 @@ finish:
if (valid_pid_file)
pa_pid_file_remove();
+ /* This has no real purpose except making things valgrind-clean */
+ pa_unset_env_recorded();
+
#ifdef OS_IS_WIN32
WSACleanup();
#endif
diff --git a/src/pulsecore/start-child.c b/src/pulsecore/start-child.c
index b3bce131..4a70aea1 100644
--- a/src/pulsecore/start-child.c
+++ b/src/pulsecore/start-child.c
@@ -86,6 +86,11 @@ int pa_start_child_for_read(const char *name, const char *argv1, pid_t *pid) {
pa_reset_sigs(-1);
pa_unblock_sigs(-1);
pa_reset_priority();
+ pa_unset_env_recorded();
+
+ /* Make sure our children are not influenced by the
+ * LD_BIND_NOW we set for ourselves. */
+ unsetenv("LD_BIND_NOW");
#ifdef PR_SET_PDEATHSIG
/* On Linux we can use PR_SET_PDEATHSIG to have the helper