Merge pull request #3878

5a412b7 disable file size sanity check when loading the wallet cache (moneromooo-monero)
This commit is contained in:
luigi1111 2018-06-19 12:57:59 -05:00
commit 896512b2b6
No known key found for this signature in database
GPG Key ID: F4ACA0183641E010
2 changed files with 4 additions and 4 deletions

View File

@ -128,7 +128,7 @@ namespace file_io_utils
inline 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 #ifdef WIN32
WCHAR wide_path[1000]; WCHAR wide_path[1000];
@ -139,7 +139,7 @@ namespace file_io_utils
if (file_handle == INVALID_HANDLE_VALUE) if (file_handle == INVALID_HANDLE_VALUE)
return false; return false;
DWORD file_size = GetFileSize(file_handle, NULL); 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); CloseHandle(file_handle);
return false; return false;
} }
@ -159,7 +159,7 @@ namespace file_io_utils
std::ifstream::pos_type file_size = fstream.tellg(); 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 return false;//don't go crazy
size_t file_size_t = static_cast<size_t>(file_size); size_t file_size_t = static_cast<size_t>(file_size);

View File

@ -3794,7 +3794,7 @@ void wallet2::load(const std::string& wallet_, const epee::wipeable_string& pass
{ {
wallet2::cache_file_data cache_file_data; wallet2::cache_file_data cache_file_data;
std::string buf; 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); THROW_WALLET_EXCEPTION_IF(!r, error::file_read_error, m_wallet_file);
// try to read it as an encrypted cache // try to read it as an encrypted cache