Hello,

Attached is an updated patch for xerces-c-3.1.1-3. It has also been
reported upstream for the 3.1.1 release: 
https://issues.apache.org/jira/browse/XERCESC-1998

The functions realpath and getcwd  are already checked for in
configure.ac/configure

Thanks! 
Index: xerces-c-3.1.1/src/xercesc/util/FileManagers/PosixFileMgr.cpp
===================================================================
--- xerces-c-3.1.1.orig/src/xercesc/util/FileManagers/PosixFileMgr.cpp	2012-10-11 08:33:27.000000000 +0200
+++ xerces-c-3.1.1/src/xercesc/util/FileManagers/PosixFileMgr.cpp	2012-10-11 11:39:59.000000000 +0200
@@ -186,28 +186,28 @@
     char* newSrc = XMLString::transcode(srcPath, manager);
     ArrayJanitor<char> janText(newSrc, manager);
 
-    // Use a local buffer that is big enough for the largest legal path
-    char absPath[PATH_MAX + 1];
-    
     // get the absolute path
-    if (!realpath(newSrc, absPath))
+    char *absPath = realpath(newSrc, NULL);
+    if (!absPath)
    		ThrowXMLwithMemMgr(XMLPlatformUtilsException, XMLExcepts::File_CouldNotGetBasePathName, manager);
-
-    return XMLString::transcode(absPath, manager);
+    XMLCh *ret = XMLString::transcode(absPath, manager);
+    free(absPath);
+    return ret;
 }
 
 
 XMLCh*
 PosixFileMgr::getCurrentDirectory(MemoryManager* const manager)
 {
-    char dirBuf[PATH_MAX + 2];
-    char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1);
+    char *curDir = getcwd(NULL, 0);
 
     if (!curDir)
         ThrowXMLwithMemMgr(XMLPlatformUtilsException,
                  XMLExcepts::File_CouldNotGetBasePathName, manager);
 
-    return XMLString::transcode(curDir, manager);
+    XMLCh *ret = XMLString::transcode(curDir, manager);
+    free(curDir);
+    return ret;
 }
 
 

Reply via email to