Skip to content

Commit 67fdc50

Browse files
committed
descriptor: reject strings of the form "tr(<key>,)"
Fixes #736
1 parent 00cac40 commit 67fdc50

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

src/descriptor/mod.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2011,6 +2011,14 @@ pk(03f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8))";
20112011
Descriptor::<DescriptorPublicKey>::from_str("wsh(andor(pk(tpubDEN9WSToTyy9ZQfaYqSKfmVqmq1VVLNtYfj3Vkqh67et57eJ5sTKZQBkHqSwPUsoSskJeaYnPttHe2VrkCsKA27kUaN9SDc5zhqeLzKa1rr/0'/<0;1;2;3>/*),older(10000),pk(tpubD8LYfn6njiA2inCoxwM7EuN3cuLVcaHAwLYeups13dpevd3nHLRdK9NdQksWXrhLQVxcUZRpnp5CkJ1FhE61WRAsHxDNAkvGkoQkAeWDYjV/8/<0;1;2>/*)))").unwrap_err();
20122012
}
20132013

2014+
#[test]
2015+
fn regression_736() {
2016+
Descriptor::<DescriptorPublicKey>::from_str(
2017+
"tr(0000000000000000000000000000000000000000000000000000000000000002,)",
2018+
)
2019+
.unwrap_err();
2020+
}
2021+
20142022
#[test]
20152023
fn regression_734() {
20162024
Descriptor::<DescriptorPublicKey>::from_str(

src/descriptor/tr.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -603,9 +603,6 @@ fn parse_tr_tree(s: &str) -> Result<expression::Tree, Error> {
603603
return Err(Error::Unexpected("invalid taproot internal key".to_string()));
604604
}
605605
let internal_key = expression::Tree { name: key.name, args: vec![] };
606-
if script.is_empty() {
607-
return Ok(expression::Tree { name: "tr", args: vec![internal_key] });
608-
}
609606
let (tree, rest) = expression::Tree::from_slice_delim(script, 1, '{')?;
610607
if rest.is_empty() {
611608
Ok(expression::Tree { name: "tr", args: vec![internal_key, tree] })

0 commit comments

Comments
 (0)