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

Reply via email to