Interpret remapping targets ending with /.. as directories

This commit is contained in:
Kamil Śliwak
2021-09-27 13:14:10 +02:00
parent 479ba7c523
commit 8a8471d9cc
2 changed files with 9 additions and 4 deletions
+6 -1
View File
@@ -356,8 +356,13 @@ bool CommandLineParser::parseInputPathsAndRemappings()
return false;
}
// If the target is a directory, whitelist it. Otherwise whitelist containing dir.
// NOTE: /a/b/c/ is a directory while /a/b/c is not.
boost::filesystem::path remappingDir = remapping->target;
remappingDir.remove_filename();
if (remappingDir.filename() != "..")
// As an exception we'll treat /a/b/c/.. as a directory too. It would be
// unintuitive to whitelist /a/b/c when the target is equivalent to /a/b/.
remappingDir.remove_filename();
m_options.input.allowedDirectories.insert(remappingDir.empty() ? "." : remappingDir);
m_options.input.remappings.emplace_back(move(remapping.value()));