Merged revisions 272925 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 28 Jun 2010 21:50:57 +0000 (21:50 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 28 Jun 2010 21:50:57 +0000 (21:50 +0000)
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: https://origsvn.digium.com/svn/asterisk/trunk@272926 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/asterisk.c

index 66967f5..0fd1711 100644 (file)
@@ -3156,7 +3156,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;
@@ -3366,8 +3366,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__
@@ -3383,7 +3387,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)) {