]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 272926 via svnmerge from
authorTilghman Lesher <tilghman@meg.abyt.es>
Mon, 28 Jun 2010 21:51:52 +0000 (21:51 +0000)
committerTilghman Lesher <tilghman@meg.abyt.es>
Mon, 28 Jun 2010 21:51:52 +0000 (21:51 +0000)
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: https://origsvn.digium.com/svn/asterisk/branches/1.6.2@272927 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/asterisk.c

index 47a9cb53e42c50aff438aeb32321b9336139117d..67dbfa8d7b23ea9f0938a007e5dacf0bf53aaec9 100644 (file)
@@ -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)) {