aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2018-06-19 12:57:59 -0500
committerluigi1111 <luigi1111w@gmail.com>2018-06-19 12:57:59 -0500
commit896512b2b6c68b032645c6e16654386fad8ef6e5 (patch)
tree89be8a90b2b35f354058ef5af94fb27eb74223da
parentMerge pull request #3861 (diff)
parentdisable file size sanity check when loading the wallet cache (diff)
downloadmonero-896512b2b6c68b032645c6e16654386fad8ef6e5.tar.xz
Merge pull request #3878
5a412b7 disable file size sanity check when loading the wallet cache (moneromooo-monero)
-rw-r--r--contrib/epee/include/file_io_utils.h6
-rw-r--r--src/wallet/wallet2.cpp2
2 files changed, 4 insertions, 4 deletions
diff --git a/contrib/epee/include/file_io_utils.h b/contrib/epee/include/file_io_utils.h
index 196610674..0afff800f 100644
--- a/contrib/epee/include/file_io_utils.h
+++ b/contrib/epee/include/file_io_utils.h
@@ -128,7 +128,7 @@ namespace file_io_utils
inline
- bool load_file_to_string(const std::string& path_to_file, std::string& target_str)
+ bool load_file_to_string(const std::string& path_to_file, std::string& target_str, size_t max_size = 1000000000)
{
#ifdef WIN32
WCHAR wide_path[1000];
@@ -139,7 +139,7 @@ namespace file_io_utils
if (file_handle == INVALID_HANDLE_VALUE)
return false;
DWORD file_size = GetFileSize(file_handle, NULL);
- if ((file_size == INVALID_FILE_SIZE) || (file_size > 1000000000)) {
+ if ((file_size == INVALID_FILE_SIZE) || (uint64_t)file_size > (uint64_t)max_size) {
CloseHandle(file_handle);
return false;
}
@@ -159,7 +159,7 @@ namespace file_io_utils
std::ifstream::pos_type file_size = fstream.tellg();
- if(file_size > 1000000000)
+ if((uint64_t)file_size > (uint64_t)max_size) // ensure a large domain for comparison, and negative -> too large
return false;//don't go crazy
size_t file_size_t = static_cast<size_t>(file_size);
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 617fb9a87..bb0953689 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -3794,7 +3794,7 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass
{
wallet2::cache_file_data cache_file_data;
std::string buf;
- bool r = epee::file_io_utils::load_file_to_string(m_wallet_file, buf);
+ bool r = epee::file_io_utils::load_file_to_string(m_wallet_file, buf, std::numeric_limits<size_t>::max());
THROW_WALLET_EXCEPTION_IF(!r, error::file_read_error, m_wallet_file);
// try to read it as an encrypted cache