Merge pull request #8788

c61d33e wallet2: fix outdated wallet check (Crypto City)
This commit is contained in:
luigi1111 2023-04-25 11:22:11 -04:00
commit 0db1b4503e
No known key found for this signature in database
GPG Key ID: F4ACA0183641E010

View File

@ -3033,15 +3033,20 @@ void check_block_hard_fork_version(cryptonote::network_type nettype, uint8_t hf_
const hardfork_t *wallet_hard_forks = nettype == TESTNET ? testnet_hard_forks const hardfork_t *wallet_hard_forks = nettype == TESTNET ? testnet_hard_forks
: nettype == STAGENET ? stagenet_hard_forks : mainnet_hard_forks; : nettype == STAGENET ? stagenet_hard_forks : mainnet_hard_forks;
wallet_is_outdated = static_cast<size_t>(hf_version) > wallet_num_hard_forks; wallet_is_outdated = hf_version > wallet_hard_forks[wallet_num_hard_forks-1].version;
if (wallet_is_outdated) if (wallet_is_outdated)
return; return;
// check block's height falls within wallet's expected range for block's given version // check block's height falls within wallet's expected range for block's given version
uint64_t start_height = hf_version == 1 ? 0 : wallet_hard_forks[hf_version - 1].height; size_t fork_index;
uint64_t end_height = static_cast<size_t>(hf_version) + 1 > wallet_num_hard_forks for (fork_index = 0; fork_index < wallet_num_hard_forks; ++fork_index)
if (wallet_hard_forks[fork_index].version == hf_version)
break;
THROW_WALLET_EXCEPTION_IF(fork_index == wallet_num_hard_forks, error::wallet_internal_error, "Fork not found in table");
uint64_t start_height = wallet_hard_forks[fork_index].height;
uint64_t end_height = fork_index == wallet_num_hard_forks - 1
? std::numeric_limits<uint64_t>::max() ? std::numeric_limits<uint64_t>::max()
: wallet_hard_forks[hf_version].height; : wallet_hard_forks[fork_index + 1].height;
daemon_is_outdated = height < start_height || height >= end_height; daemon_is_outdated = height < start_height || height >= end_height;
} }