Skip to content

Commit 0652ee7

Browse files
rooprobachow101
authored andcommitted
Add size check on meta.key_origin.path
Resolves segfault on legacy wallet Log warning when meta.key_origin.path is below expected size
1 parent 577bd51 commit 0652ee7

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

src/wallet/scriptpubkeyman.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -382,11 +382,18 @@ std::vector<WalletDestination> LegacyScriptPubKeyMan::MarkUnusedAddresses(const
382382
if (it != mapKeyMetadata.end()){
383383
CKeyMetadata meta = it->second;
384384
if (!meta.hd_seed_id.IsNull() && meta.hd_seed_id != m_hd_chain.seed_id) {
385-
bool internal = (meta.key_origin.path[1] & ~BIP32_HARDENED_KEY_LIMIT) != 0;
386-
int64_t index = meta.key_origin.path[2] & ~BIP32_HARDENED_KEY_LIMIT;
387-
388-
if (!TopUpInactiveHDChain(meta.hd_seed_id, index, internal)) {
389-
WalletLogPrintf("%s: Adding inactive seed keys failed\n", __func__);
385+
if (meta.key_origin.path.size() < 3) {
386+
WalletLogPrintf("%s: Adding inactive seed keys failed, insufficient path size: %d, has_key_origin: %s\n",
387+
__func__,
388+
meta.key_origin.path.size(),
389+
meta.has_key_origin);
390+
} else {
391+
bool internal = (meta.key_origin.path[1] & ~BIP32_HARDENED_KEY_LIMIT) != 0;
392+
int64_t index = meta.key_origin.path[2] & ~BIP32_HARDENED_KEY_LIMIT;
393+
394+
if (!TopUpInactiveHDChain(meta.hd_seed_id, index, internal)) {
395+
WalletLogPrintf("%s: Adding inactive seed keys failed\n", __func__);
396+
}
390397
}
391398
}
392399
}

0 commit comments

Comments
 (0)