Changeset: 4ba9bb8ed9dc for MonetDB URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=4ba9bb8ed9dc Modified Files: gdk/gdk_bbp.c Branch: Oct2014 Log Message:
Avoid time-of-check, time-of-use race. diffs (22 lines): diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c --- a/gdk/gdk_bbp.c +++ b/gdk/gdk_bbp.c @@ -1004,12 +1004,14 @@ BBPaddfarm(const char *dirname, int role if (rolemask == 0 || (rolemask & 1 && BBPfarms[0].dirname != NULL)) { GDKfatal("BBPaddfarm: bad rolemask\n"); } - if (stat(dirname, &st) == -1) { - if (mkdir(dirname, 0755) < 0) { + if (mkdir(dirname, 0755) < 0) { + if (errno == EEXIST) { + if (stat(dirname, &st) == -1 || !S_ISDIR(st.st_mode)) { + GDKfatal("BBPaddfarm: %s: not a directory\n", dirname); + } + } else { GDKfatal("BBPaddfarm: %s: cannot create directory\n", dirname); } - } else if (!S_ISDIR(st.st_mode)) { - GDKfatal("BBPaddfarm: %s: not a directory\n", dirname); } for (i = 0; i < MAXFARMS; i++) { if (BBPfarms[i].dirname == NULL) { _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list