aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-28 21:51:52 +0000
committertilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b>2010-06-28 21:51:52 +0000
commit419789e01b3f67cfca445afe6453fa00629012f2 (patch)
tree46b4ecce7fbbc1861a82ffd6b2f97e8395face86
parentafe4b277bf32e0873c2b7829d9f78280b62310a2 (diff)
Merged revisions 272926 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ................ r272926 | tilghman | 2010-06-28 16:50:57 -0500 (Mon, 28 Jun 2010) | 15 lines Merged revisions 272925 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r272925 | tilghman | 2010-06-28 16:50:02 -0500 (Mon, 28 Jun 2010) | 8 lines Don't change ownership/group/permissions on run directory, if it already exists. (closes issue #17076) Reported by: stuarth Patches: 20100324__issue17076.diff.txt uploaded by tilghman (license 14) Tested by: stuarth ........ ................ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.2@272927 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--main/asterisk.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/main/asterisk.c b/main/asterisk.c
index 47a9cb53e..67dbfa8d7 100644
--- a/main/asterisk.c
+++ b/main/asterisk.c
@@ -3134,7 +3134,7 @@ int main(int argc, char *argv[])
FILE *f;
sigset_t sigs;
int num;
- int isroot = 1;
+ int isroot = 1, rundir_exists = 0;
char *buf;
const char *runuser = NULL, *rungroup = NULL;
char *remotesock = NULL;
@@ -3334,8 +3334,12 @@ int main(int argc, char *argv[])
/* 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));
+ if (mkdir(ast_config_AST_RUN_DIR, 0755)) {
+ if (errno == EEXIST) {
+ rundir_exists = 1;
+ } else {
+ ast_log(LOG_WARNING, "Unable to create socket file directory. Remote consoles will not be able to connect! (%s)\n", strerror(x));
+ }
}
#ifndef __CYGWIN__
@@ -3351,7 +3355,7 @@ 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)) {
+ if (!rundir_exists && 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)) {