From 29c9e2c2d2015ade47ed4497926363dea3f9c59b Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Mon, 10 May 2021 21:45:18 +0300 Subject: wallet: Do not iterate a directory if having an error while accessing it This change prevents infinite looping for, for example, system folders on Windows. --- src/wallet/db.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/wallet/db.cpp b/src/wallet/db.cpp index cd49baeb78..5bf037b222 100644 --- a/src/wallet/db.cpp +++ b/src/wallet/db.cpp @@ -18,7 +18,12 @@ std::vector ListDatabases(const fs::path& wallet_dir) for (auto it = fs::recursive_directory_iterator(wallet_dir, ec); it != fs::recursive_directory_iterator(); it.increment(ec)) { if (ec) { - LogPrintf("%s: %s %s\n", __func__, ec.message(), it->path().string()); + if (fs::is_directory(*it)) { + it.no_push(); + LogPrintf("%s: %s %s -- skipping.\n", __func__, ec.message(), it->path().string()); + } else { + LogPrintf("%s: %s %s\n", __func__, ec.message(), it->path().string()); + } continue; } -- cgit v1.2.3