From 0ef76122eda140452e2ee97aac18a59d3c686c94 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 4 May 2009 16:16:39 +0200 Subject: Chdir to / when daemonizing --- server/util/server.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'server') diff --git a/server/util/server.c b/server/util/server.c index a24029229..7c1c927f3 100644 --- a/server/util/server.c +++ b/server/util/server.c @@ -74,6 +74,8 @@ static void close_low_fds(bool stderr_too) void become_daemon(bool Fork) { + int ret; + if (Fork) { if (fork()) { _exit(0); @@ -83,6 +85,15 @@ void become_daemon(bool Fork) /* detach from the terminal */ setsid(); + /* chdir to / to be sure we're not on a remote filesystem */ + errno = 0; + if(chdir("/") == -1) { + ret = errno; + DEBUG(0, ("Cannot change directory (%d [%s])\n", + ret, strerror(ret))); + return; + } + /* Close fd's 0,1,2. Needed if started by rsh */ close_low_fds(false); /* Don't close stderr, let the debug system attach it to the logfile */ -- cgit