summarylogtreecommitdiffstats
path: root/0003-fix-concurrent-directory-creation.all.patch
blob: 68a6a3dfd4836faad2ceca77b270668a97c15739 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
--- libxslt-1.1.29/libxslt/security.c.orig	2013-04-01 02:31:05 +0400
+++ libxslt-1.1.29/libxslt/security.c	2013-04-01 02:32:21 +0400
@@ -342,8 +342,16 @@
 		}
 	    }
 	    ret = xsltCheckWritePath(sec, ctxt, directory);
-	    if (ret == 1)
+	    if (ret == 1) {
 		ret = mkdir(directory, 0755);
+		if (ret == -1 && errno == EEXIST) {
+		    struct stat buf;
+                    ret = stat(directory, &buf);
+                    if (ret == 0) {
+                        ret = S_ISDIR(buf.st_mode) ? 0 : -1;
+                    }
+		}
+	    }
 	}
 	xmlFree(directory);
 	if (ret < 0)