Merge pull request #6118 from sellout/canonical-paths

Canonicalize some user-provided paths
This commit is contained in:
Kris Nuttycombe 2022-08-25 16:11:34 -06:00 committed by GitHub
commit d3e8b3b114
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 3 deletions

View File

@ -299,7 +299,7 @@ const fs::path &ZC_GetParamsDir()
return path; return path;
if (mapArgs.count("-paramsdir")) { if (mapArgs.count("-paramsdir")) {
path = fs::system_complete(mapArgs["-paramsdir"]); path = fs::weakly_canonical(fs::system_complete(mapArgs["-paramsdir"]));
if (!fs::is_directory(path)) { if (!fs::is_directory(path)) {
throw std::runtime_error(strprintf("The -paramsdir '%s' does not exist or is not a directory", path.string())); throw std::runtime_error(strprintf("The -paramsdir '%s' does not exist or is not a directory", path.string()));
} }
@ -318,7 +318,7 @@ const fs::path GetExportDir()
fs::path path; fs::path path;
LOCK(cs_args); LOCK(cs_args);
if (mapArgs.count("-exportdir")) { if (mapArgs.count("-exportdir")) {
path = fs::system_complete(mapArgs["-exportdir"]); path = fs::weakly_canonical(fs::system_complete(mapArgs["-exportdir"]));
if (fs::exists(path) && !fs::is_directory(path)) { if (fs::exists(path) && !fs::is_directory(path)) {
throw std::runtime_error(strprintf("The -exportdir '%s' already exists and is not a directory", path.string())); throw std::runtime_error(strprintf("The -exportdir '%s' already exists and is not a directory", path.string()));
} }
@ -342,7 +342,7 @@ const fs::path &GetDataDir(bool fNetSpecific)
return path; return path;
if (mapArgs.count("-datadir")) { if (mapArgs.count("-datadir")) {
path = fs::system_complete(mapArgs["-datadir"]); path = fs::weakly_canonical(fs::system_complete(mapArgs["-datadir"]));
if (!fs::is_directory(path)) { if (!fs::is_directory(path)) {
path = ""; path = "";
return path; return path;