aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-02-25 21:25:05 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-02-25 21:25:05 +0000
commitf2e5c69b405a70f316e678c90e674f80fb272a0e (patch)
tree673e342905e1a7a7d929623c87b69e2b6ee5cabf
parent0fdb0da05278efc3d4613aa8d0a84baf4e897ba8 (diff)
Merged revisions 248861 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r248861 | tilghman | 2010-02-25 15:22:39 -0600 (Thu, 25 Feb 2010) | 22 lines Merged revisions 248859 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r248859 | tilghman | 2010-02-25 15:21:05 -0600 (Thu, 25 Feb 2010) | 15 lines Some platforms clear /var/run at boot, which makes connecting a remote console... difficult. Previously, we only created the default /var/run/asterisk directory at install time. While we could create it in the init script, that would not work for those who start asterisk manually from the command line. So the safest thing to do is to create it as part of the Asterisk boot process. This also changes the ownership of the directory, because the pid and ctl files are created after we setuid/setgid. (closes issue #16802) Reported by: Brian Patches: 20100224__issue16802.diff.txt uploaded by tilghman (license 14) Tested by: tzafrir ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@248864 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--main/asterisk.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index 085b9b598..e27f685c5 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -3301,6 +3301,12 @@ int main(int argc, char *argv[])
*/
signal(SIGCHLD, child_handler);
+ /* It's common on some platforms to clear /var/run at boot. Create the
+ * socket file directory before we drop privileges. */
+ if (mkdir(ast_config_AST_RUN_DIR, 0755) && errno != EEXIST) {
+ ast_log(LOG_WARNING, "Unable to create socket file directory. Remote consoles will not be able to connect! (%s)\n", strerror(x));
+ }
+
#ifndef __CYGWIN__
if (isroot) {
@@ -3314,6 +3320,9 @@ int main(int argc, char *argv[])
ast_log(LOG_WARNING, "No such group '%s'!\n", rungroup);
exit(1);
}
+ if (chown(ast_config_AST_RUN_DIR, -1, gr->gr_gid)) {
+ ast_log(LOG_WARNING, "Unable to chgrp run directory to %d (%s)\n", (int) gr->gr_gid, rungroup);
+ }
if (setgid(gr->gr_gid)) {
ast_log(LOG_WARNING, "Unable to setgid to %d (%s)\n", (int)gr->gr_gid, rungroup);
exit(1);
@@ -3336,6 +3345,9 @@ int main(int argc, char *argv[])
ast_log(LOG_WARNING, "No such user '%s'!\n", runuser);
exit(1);
}
+ if (chown(ast_config_AST_RUN_DIR, pw->pw_uid, -1)) {
+ ast_log(LOG_WARNING, "Unable to chown run directory to %d (%s)\n", (int) pw->pw_uid, runuser);
+ }
#ifdef HAVE_CAP
if (prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0)) {
ast_log(LOG_WARNING, "Unable to keep capabilities.\n");