21 lines
585 B
Diff
21 lines
585 B
Diff
--- 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)
|