From 6306a2634bf096c2ebbe4a772538703350234d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 30 Jul 2015 22:54:39 +0200 Subject: [PATCH] launch_daemon: Set working directory to user's directory. * This fixes #12257. --- src/servers/launch/LaunchDaemon.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/servers/launch/LaunchDaemon.cpp b/src/servers/launch/LaunchDaemon.cpp index efaa328d9d..93fbaac5dd 100644 --- a/src/servers/launch/LaunchDaemon.cpp +++ b/src/servers/launch/LaunchDaemon.cpp @@ -1215,9 +1215,16 @@ LaunchDaemon::_StartSession(const char* login) if (setuid(user) != 0) exit(EXIT_FAILURE); - BString home="HOME=\""; - home << passwd->pw_dir << "\""; - putenv(home.String()); + if (passwd->pw_dir != NULL && passwd->pw_dir[0] != '\0') { + BString home="HOME=\""; + home << passwd->pw_dir << "\""; + putenv(home.String()); + + if (chdir(passwd->pw_dir) != 0) { + debug_printf("Could not switch to home dir %s: %s\n", + passwd->pw_dir, strerror(errno)); + } + } // TODO: This leaks the parent application be_app = NULL;