【发布时间】:2020-04-09 14:34:47
【问题描述】:
我有一个由std::filesystem::path 表示的根路径。我想在此路径中添加一些用户提供的文件名,并确保生成的路径不在根目录之外。
例如:
std::filesystem::path root = "/foo/bar";
std::filesystem::path userFile = "ham/spam";
std::filesystem::path finalPath = root / userFile;
最后的路径没问题,在/foo/bar里面。
但是如果我将../ham/spam 赋予userFile 变量,这将导致定义rootPath 之外的文件。
如何检查生成的文件是否保持在其允许的范围内?
【问题讨论】:
-
如果
std::filesystem库包含一些计算新absolute路径的函数,那岂不是很有用? -
@SamVarshavchik:不,它不会,因为
absolute(以及canonical)都需要存在的路径。它可能不会。
标签: c++ c++17 std-filesystem