--- 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) |