From 0576765f21347b5494b2b295f13d486e7559e9c2 Mon Sep 17 00:00:00 2001 From: sanket1729 Date: Mon, 29 Jun 2020 14:03:29 -0500 Subject: [PATCH 1/2] Change limit to 100kb --- src/lib.rs | 2 +- src/miniscript/mod.rs | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 968114e94..26e868cc2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -333,7 +333,7 @@ pub enum Error { IncorrectScriptHash, /// Recursion depth exceeded when parsing policy/miniscript from string MaxRecursiveDepthExceeded, - /// Recursion depth exceeded when parsing policy/miniscript from string + /// Script size too large ScriptSizeTooLarge, } diff --git a/src/miniscript/mod.rs b/src/miniscript/mod.rs index eed4bfcb8..3be192499 100644 --- a/src/miniscript/mod.rs +++ b/src/miniscript/mod.rs @@ -129,7 +129,9 @@ impl Miniscript { /// Attempt to parse a script into a Miniscript representation pub fn parse(script: &script::Script) -> Result, Error> { // Transactions more than 100Kb are non-standard - if script.len() > 10000 {} + if script.len() > 100_000 { + return Err(Error::ScriptSizeTooLarge); + } let tokens = lex(script)?; let mut iter = TokenIter::new(tokens); From bcbe365015768de2421d45c7738b1cd31817c2b1 Mon Sep 17 00:00:00 2001 From: sanket1729 Date: Mon, 29 Jun 2020 14:04:58 -0500 Subject: [PATCH 2/2] decode 65 bytes pubkeys too --- src/miniscript/lex.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/miniscript/lex.rs b/src/miniscript/lex.rs index 152b31404..bf4a12011 100644 --- a/src/miniscript/lex.rs +++ b/src/miniscript/lex.rs @@ -224,7 +224,7 @@ pub fn lex(script: &script::Script) -> Result, Error> { x.copy_from_slice(bytes); ret.push(Token::Hash32(x)) } - 33 => { + 33 | 65 => { ret.push(Token::Pubkey( PublicKey::from_slice(bytes).map_err(Error::BadPubkey)?, ));