From 2d117f08d1c709d06950df2cef90860d68c1560b Mon Sep 17 00:00:00 2001 From: PeiYong Zhang <peiyongz@apache.org> Date: Fri, 25 Apr 2003 17:21:31 +0000 Subject: [PATCH] throw exception if getcwd() fails git-svn-id: https://svn.apache.org/repos/asf/xerces/c/trunk@174925 13f79535-47bb-0310-9956-ffa450edef68 --- .../util/Platforms/AIX/AIXPlatformUtils.cpp | 16 +++++++++++----- .../util/Platforms/BeOS/BeOSPlatformUtils.cpp | 19 ++++++++++++++----- .../FreeBSD/FreeBSDPlatformUtils.cpp | 19 ++++++++++++++----- .../util/Platforms/HPUX/HPPlatformUtils.cpp | 19 ++++++++++++++----- .../util/Platforms/IRIX/IRIXPlatformUtils.cpp | 19 ++++++++++++++----- .../Platforms/Linux/LinuxPlatformUtils.cpp | 19 ++++++++++++++----- .../Platforms/OS400/OS400PlatformUtils.cpp | 16 +++++++++++----- .../OpenServer/OpenServerPlatformUtils.cpp | 17 +++++++++++++---- .../util/Platforms/QNX/QNXPlatformUtils.cpp | 16 +++++++++++----- .../Solaris/SolarisPlatformUtils.cpp | 16 +++++++++++----- .../Platforms/Tru64/Tru64PlatformUtils.cpp | 16 +++++++++++----- .../UnixWare/UnixWarePlatformUtils.cpp | 19 ++++++++++++++----- 12 files changed, 152 insertions(+), 59 deletions(-) diff --git a/src/xercesc/util/Platforms/AIX/AIXPlatformUtils.cpp b/src/xercesc/util/Platforms/AIX/AIXPlatformUtils.cpp index f53bfe8e9..e81604baa 100644 --- a/src/xercesc/util/Platforms/AIX/AIXPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/AIX/AIXPlatformUtils.cpp @@ -322,7 +322,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; //get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -354,10 +354,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/BeOS/BeOSPlatformUtils.cpp b/src/xercesc/util/Platforms/BeOS/BeOSPlatformUtils.cpp index c04c143a9..bd56f6d6e 100644 --- a/src/xercesc/util/Platforms/BeOS/BeOSPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/BeOS/BeOSPlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.6 2003/04/25 17:18:53 peiyongz + * throw exception if getcwd() fails + * * Revision 1.5 2003/04/24 02:52:34 peiyongz * Logical Path Resolution * @@ -378,7 +381,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; // get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -409,10 +412,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/FreeBSD/FreeBSDPlatformUtils.cpp b/src/xercesc/util/Platforms/FreeBSD/FreeBSDPlatformUtils.cpp index c1ac18c97..d4a454a86 100644 --- a/src/xercesc/util/Platforms/FreeBSD/FreeBSDPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/FreeBSD/FreeBSDPlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.12 2003/04/25 17:19:10 peiyongz + * throw exception if getcwd() fails + * * Revision 1.11 2003/04/24 02:53:29 peiyongz * Logical Path Resolution * @@ -414,7 +417,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; // get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -445,10 +448,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/HPUX/HPPlatformUtils.cpp b/src/xercesc/util/Platforms/HPUX/HPPlatformUtils.cpp index b06d4b38b..7e5b703b7 100644 --- a/src/xercesc/util/Platforms/HPUX/HPPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/HPUX/HPPlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.12 2003/04/25 17:19:26 peiyongz + * throw exception if getcwd() fails + * * Revision 1.11 2003/04/24 02:53:52 peiyongz * Logical Path Resolution * @@ -459,7 +462,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; //get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -491,10 +494,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/IRIX/IRIXPlatformUtils.cpp b/src/xercesc/util/Platforms/IRIX/IRIXPlatformUtils.cpp index 325ef34ec..24b92aebd 100644 --- a/src/xercesc/util/Platforms/IRIX/IRIXPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/IRIX/IRIXPlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.11 2003/04/25 17:19:40 peiyongz + * throw exception if getcwd() fails + * * Revision 1.10 2003/04/24 02:54:24 peiyongz * Logical Path Resolution * @@ -431,7 +434,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; // get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -462,10 +465,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/Linux/LinuxPlatformUtils.cpp b/src/xercesc/util/Platforms/Linux/LinuxPlatformUtils.cpp index f3a4d48bb..119c12c6c 100644 --- a/src/xercesc/util/Platforms/Linux/LinuxPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/Linux/LinuxPlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.15 2003/04/25 17:19:53 peiyongz + * throw exception if getcwd() fails + * * Revision 1.14 2003/04/24 02:54:46 peiyongz * Logical Path Resolution * @@ -474,7 +477,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; // get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -505,10 +508,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/OS400/OS400PlatformUtils.cpp b/src/xercesc/util/Platforms/OS400/OS400PlatformUtils.cpp index 043a10315..6dc79280c 100644 --- a/src/xercesc/util/Platforms/OS400/OS400PlatformUtils.cpp +++ b/src/xercesc/util/Platforms/OS400/OS400PlatformUtils.cpp @@ -396,7 +396,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) char* newSrc = XMLString::transcode(srcPath); ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; //get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -428,10 +428,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/OpenServer/OpenServerPlatformUtils.cpp b/src/xercesc/util/Platforms/OpenServer/OpenServerPlatformUtils.cpp index 3e06d65c5..db6a21482 100644 --- a/src/xercesc/util/Platforms/OpenServer/OpenServerPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/OpenServer/OpenServerPlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.7 2003/04/25 17:20:11 peiyongz + * throw exception if getcwd() fails + * * Revision 1.6 2003/04/24 02:55:58 peiyongz * Logical Path Resolution * @@ -386,10 +389,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/QNX/QNXPlatformUtils.cpp b/src/xercesc/util/Platforms/QNX/QNXPlatformUtils.cpp index 64a30dd47..583307f2d 100644 --- a/src/xercesc/util/Platforms/QNX/QNXPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/QNX/QNXPlatformUtils.cpp @@ -227,7 +227,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) // char* newSrc = XMLString::transcode(srcPath); ArrayJanitor<char> janText(newSrc); - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; char* retPath = realpath(newSrc, &absPath[0]); @@ -248,10 +248,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/Solaris/SolarisPlatformUtils.cpp b/src/xercesc/util/Platforms/Solaris/SolarisPlatformUtils.cpp index fd7770654..a56cb3a4a 100644 --- a/src/xercesc/util/Platforms/Solaris/SolarisPlatformUtils.cpp +++ b/src/xercesc/util/Platforms/Solaris/SolarisPlatformUtils.cpp @@ -344,7 +344,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; //get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -375,10 +375,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/Tru64/Tru64PlatformUtils.cpp b/src/xercesc/util/Platforms/Tru64/Tru64PlatformUtils.cpp index 99ea0fb52..065ce4719 100644 --- a/src/xercesc/util/Platforms/Tru64/Tru64PlatformUtils.cpp +++ b/src/xercesc/util/Platforms/Tru64/Tru64PlatformUtils.cpp @@ -343,7 +343,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; //get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -375,10 +375,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) diff --git a/src/xercesc/util/Platforms/UnixWare/UnixWarePlatformUtils.cpp b/src/xercesc/util/Platforms/UnixWare/UnixWarePlatformUtils.cpp index 609e13aa5..92c3fd453 100644 --- a/src/xercesc/util/Platforms/UnixWare/UnixWarePlatformUtils.cpp +++ b/src/xercesc/util/Platforms/UnixWare/UnixWarePlatformUtils.cpp @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.9 2003/04/25 17:21:31 peiyongz + * throw exception if getcwd() fails + * * Revision 1.8 2003/04/24 02:59:20 peiyongz * Logical Path Resolution * @@ -405,7 +408,7 @@ XMLCh* XMLPlatformUtils::getFullPath(const XMLCh* const srcPath) ArrayJanitor<char> janText(newSrc); // Use a local buffer that is big enough for the largest legal path - char absPath[PATH_MAX]; + char absPath[PATH_MAX + 1]; //get the absolute path char* retPath = realpath(newSrc, &absPath[0]); @@ -437,10 +440,16 @@ bool XMLPlatformUtils::isRelative(const XMLCh* const toCheck) XMLCh* XMLPlatformUtils::getCurrentDirectory() { - char *tempDir = getcwd(NULL, PATH_MAX+1); - XMLCh *curDir = tempDir ? XMLString::transcode(tempDir) : 0; - free(tempDir); - return curDir; + char dirBuf[PATH_MAX + 1]; + char *curDir = getcwd(&dirBuf[0], PATH_MAX + 1); + + if (!curDir) + { + ThrowXML(XMLPlatformUtilsException, + XMLExcepts::File_CouldNotGetBasePathName); + } + + return XMLString::transcode(curDir); } inline bool XMLPlatformUtils::isAnySlash(XMLCh c) -- GitLab