summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2007-10-29 15:33:07 +0000
committerLennart Poettering <lennart@poettering.net>2007-10-29 15:33:07 +0000
commita46804a8e2ba8aa0e869bcf72015e3b551a7b40d (patch)
tree3563b0f18937b550b40e2552e17b84f166b51e5f
parent27d6b7b4732f3678ecb6f1e5e53d440f1e8b2547 (diff)
use real path of binary instead of /proc/self/exe to execute ourselves
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1976 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/daemon/main.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/daemon/main.c b/src/daemon/main.c
index 6c9f6627..cd3cfcc8 100644
--- a/src/daemon/main.c
+++ b/src/daemon/main.c
@@ -336,11 +336,14 @@ int main(int argc, char *argv[]) {
*/
if (!getenv("LD_BIND_NOW")) {
- putenv(pa_xstrdup("LD_BIND_NOW=1"));
+ char *rp;
/* We have to execute ourselves, because the libc caches the
* value of $LD_BIND_NOW on initialization. */
- pa_assert_se(execv("/proc/self/exe", argv) == 0);
+
+ putenv(pa_xstrdup("LD_BIND_NOW=1"));
+ pa_assert_se(rp = pa_readlink("/proc/self/exe"));
+ pa_assert_se(execv(rp, argv) == 0);
}
#endif