@@ -, +, @@ --- libxslt/security.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) --- libxslt/security.c +++ libxslt/security.c @@ -18,6 +18,10 @@ #include #endif +#ifdef HAVE_ERRNO_H +#include +#endif + #ifdef HAVE_MATH_H #include #endif @@ -342,8 +346,16 @@ xsltCheckWritePath(xsltSecurityPrefsPtr sec, } } ret = xsltCheckWritePath(sec, ctxt, directory); - if (ret == 1) + if (ret == 1) { +#ifdef HAVE_ERRNO_H + errno = 0; +#endif ret = mkdir(directory, 0755); +#ifdef HAVE_ERRNO_H + if (ret < 0 && errno == EEXIST) + ret = 0; +#endif + } } xmlFree(directory); if (ret < 0) --