Skip to content

Commit 0ca258a

Browse files
committed
descriptor: never ignore the return value when deriving an extended key
In some cases we asserted it succeeded, in others we were just ignoring it
1 parent d3599c2 commit 0ca258a

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/script/descriptor.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ class BIP32PubkeyProvider final : public PubkeyProvider
328328
{
329329
if (!GetExtKey(arg, xprv)) return false;
330330
for (auto entry : m_path) {
331-
xprv.Derive(xprv, entry);
331+
if (!xprv.Derive(xprv, entry)) return false;
332332
if (entry >> 31) {
333333
last_hardened = xprv;
334334
}
@@ -498,8 +498,8 @@ class BIP32PubkeyProvider final : public PubkeyProvider
498498
CExtKey extkey;
499499
CExtKey dummy;
500500
if (!GetDerivedExtKey(arg, extkey, dummy)) return false;
501-
if (m_derive == DeriveType::UNHARDENED) extkey.Derive(extkey, pos);
502-
if (m_derive == DeriveType::HARDENED) extkey.Derive(extkey, pos | 0x80000000UL);
501+
if (m_derive == DeriveType::UNHARDENED && !extkey.Derive(extkey, pos)) return false;
502+
if (m_derive == DeriveType::HARDENED && !extkey.Derive(extkey, pos | 0x80000000UL)) return false;
503503
key = extkey.key;
504504
return true;
505505
}

src/test/descriptor_tests.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string&
233233
for (const auto& xpub_pair : parent_xpub_cache) {
234234
const CExtPubKey& xpub = xpub_pair.second;
235235
CExtPubKey der;
236-
xpub.Derive(der, i);
236+
BOOST_CHECK(xpub.Derive(der, i));
237237
pubkeys.insert(der.pubkey);
238238
}
239239
int count_pks = 0;
@@ -265,7 +265,7 @@ void DoCheck(const std::string& prv, const std::string& pub, const std::string&
265265
const CExtPubKey& xpub = xpub_pair.second;
266266
pubkeys.insert(xpub.pubkey);
267267
CExtPubKey der;
268-
xpub.Derive(der, i);
268+
BOOST_CHECK(xpub.Derive(der, i));
269269
pubkeys.insert(der.pubkey);
270270
}
271271
int count_pks = 0;

0 commit comments

Comments
 (0)