daemon: don't crash if pa_realpath() fails

This commit is contained in:
Lennart Poettering 2009-10-30 05:08:48 +01:00
parent a82c6b0cd5
commit aa8ce5bb9b

View file

@ -425,21 +425,24 @@ int main(int argc, char *argv[]) {
pa_set_env("LD_BIND_NOW", "1"); pa_set_env("LD_BIND_NOW", "1");
canonical_rp = pa_realpath(PA_BINARY); if (!(canonical_rp = pa_realpath(PA_BINARY))) {
if ((rp = pa_readlink("/proc/self/exe"))) { if ((rp = pa_readlink("/proc/self/exe"))) {
if (pa_streq(rp, canonical_rp)) if (pa_streq(rp, canonical_rp))
pa_assert_se(execv(rp, argv) == 0); pa_assert_se(execv(rp, argv) == 0);
else else
pa_log_warn("/proc/self/exe does not point to %s, cannot self execute. Are you playing games?", canonical_rp); pa_log_warn("/proc/self/exe does not point to %s, cannot self execute. Are you playing games?", canonical_rp);
pa_xfree(rp); pa_xfree(rp);
} else
pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?");
pa_xfree(canonical_rp);
} else } else
pa_log_warn("Couldn't read /proc/self/exe, cannot self execute. Running in a chroot()?"); pa_log_warn("Couldn't canonicalize binary path, cannot self execute.");
pa_xfree(canonical_rp);
} }
#endif #endif