diff options
author | Adrian Kummerländer | 2014-05-24 16:14:08 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-05-24 16:14:08 +0200 |
commit | bf88fb942d624f40218716d375744aa14b3406a8 (patch) | |
tree | fa8ac29589526595ac0f59b90547d3a1364b1168 | |
parent | 085935ddd577b0c65b4330318b5ba20492d93126 (diff) | |
download | InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.tar InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.tar.gz InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.tar.bz2 InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.tar.lz InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.tar.xz InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.tar.zst InputXSLT-bf88fb942d624f40218716d375744aa14b3406a8.zip |
Prevented FilesystemContext from resolving absolute paths
* there are situations where one may pass absolute paths to external functions which should not be resolved against the context path
** for example when reading files found by "read-directory" through its "full" value node
* this could be checked by the external functions themself
** but as this check is required by all of them it is better implemented in the FilesystemContext
-rw-r--r-- | src/function/read_directory.cc | 4 | ||||
-rw-r--r-- | src/support/filesystem_context.cc | 8 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/function/read_directory.cc b/src/function/read_directory.cc index a3995ec..f4baff6 100644 --- a/src/function/read_directory.cc +++ b/src/function/read_directory.cc @@ -37,8 +37,8 @@ xercesc::DOMDocument* FunctionReadDirectory::constructDocument( switch ( boost::filesystem::status(p).type() ) { case boost::filesystem::regular_file: { - result.setAttribute("type", "file"); - result.setValueNode("name", p.stem().string()); + result.setAttribute("type", "file"); + result.setValueNode("name", p.stem().string()); result.setValueNode("extension", p.extension().string()); break; diff --git a/src/support/filesystem_context.cc b/src/support/filesystem_context.cc index a30bccc..eba7e45 100644 --- a/src/support/filesystem_context.cc +++ b/src/support/filesystem_context.cc @@ -20,7 +20,13 @@ FilesystemContext::FilesystemContext(const std::string& path): boost::filesystem::path FilesystemContext::resolve( const std::string& path) const { - return absolute(this->path_ / path); + const boost::filesystem::path targetPath(path); + + if ( targetPath.is_absolute() ) { + return targetPath; + } else { + return absolute(this->path_ / targetPath); + } } boost::filesystem::path FilesystemContext::resolve( |