]> Untitled Git - bdk/commitdiff
fix(wallet): do `check_wallet_descriptor` when creating and loading
authorvalued mammal <valuedmammal@protonmail.com>
Sat, 31 Aug 2024 17:02:25 +0000 (13:02 -0400)
committervalued mammal <valuedmammal@protonmail.com>
Mon, 9 Sep 2024 01:07:02 +0000 (21:07 -0400)
crates/wallet/src/wallet/mod.rs

index 9f12fac4e058dd6a8c761e30dc1c101ab243fbf1..306ca60f1f244917fc87f939d261c1984ffe8f9e 100644 (file)
@@ -390,6 +390,7 @@ impl Wallet {
         let (chain, chain_changeset) = LocalChain::from_genesis_hash(genesis_hash);
 
         let (descriptor, mut descriptor_keymap) = (params.descriptor)(&secp, network)?;
+        check_wallet_descriptor(&descriptor)?;
         descriptor_keymap.extend(params.descriptor_keymap);
 
         let signers = Arc::new(SignersContainer::build(
@@ -401,6 +402,7 @@ impl Wallet {
         let (change_descriptor, change_signers) = match params.change_descriptor {
             Some(make_desc) => {
                 let (change_descriptor, mut internal_keymap) = make_desc(&secp, network)?;
+                check_wallet_descriptor(&change_descriptor)?;
                 internal_keymap.extend(params.change_descriptor_keymap);
                 let change_signers = Arc::new(SignersContainer::build(
                     internal_keymap,
@@ -582,6 +584,7 @@ impl Wallet {
                 }
                 // parameters must match
                 Some(make_desc) => {
+                    check_wallet_descriptor(&desc).map_err(LoadError::Descriptor)?;
                     let (exp_desc, keymap) =
                         make_desc(&secp, network).map_err(LoadError::Descriptor)?;
                     if desc.descriptor_id() != exp_desc.descriptor_id() {