$OpenBSD: patch-main_asterisk_c,v 1.14 2010/06/18 22:10:44 sthen Exp $ from upstream ticket #17076; don't chgrp /var/run/asterisk unless it was automatically created --- main/asterisk.c.orig Tue Jun 1 16:20:14 2010 +++ main/asterisk.c Wed Jun 9 15:03:29 2010 @@ -3130,7 +3130,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; @@ -3330,8 +3330,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__ @@ -3347,7 +3351,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)) {