URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=191283
Log:
Change working directory to / under certain conditions.
If backgrounding and no core will be produced, then changing the directory
won't break anything; likewise, if the CWD isn't accessible by the current
user, then a core wasn't possible anyway.
(closes issue #14831)
Reported by: chris-mac
Patches:
20090428__bug14831.diff.txt uploaded by tilghman (license 14)
20090430__bug14831.diff.txt uploaded by tilghman (license 14)
Tested by: chris-mac
Modified:
trunk/main/asterisk.c
Modified: trunk/main/asterisk.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/main/asterisk.c?view=diff&rev=191283&r1=191282&r2=191283
==============================================================================
--- trunk/main/asterisk.c (original)
+++ trunk/main/asterisk.c Thu Apr 30 01:47:13 2009
@@ -3435,6 +3435,23 @@
ast_log(LOG_WARNING, "Unable to set the process for core dumps after changing to a non-root user. %s\n", strerror(errno));
}
}
+
+ {
+ char dir[PATH_MAX];
+ if (!getcwd(dir, sizeof(dir)) || eaccess(dir, R_OK | X_OK | F_OK)) {
+ ast_log(LOG_ERROR, "Unable to access the running directory (%s). Changing to '/' for compatibility.\n", strerror(errno));
+ /* If we cannot access the CWD, then we couldn't dump core anyway,
+ * so chdir("/") won't break anything. */
+ if (chdir("/")) {
+ ast_log(LOG_ERROR, "chdir() failed?!! %s\n", strerror(errno));
To reduce panic level and be slightly more informative:
I hear you, but the only reason for that message was because I had to do
something with the return value of chdir(). I actually believe that log
message to be a no-op, as a chdir to / should never fail. If it did ever
fail, I would love to know the reason why.
--
Tilghman
_______________________________________________
--Bandwidth and Colocation Provided by http://www.api-digital.com--
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum