diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2014-05-09 16:03:34 +0200 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2014-05-09 16:09:20 +0200 |
commit | 54f102248b183618ed7bd198c995232c89dc3152 (patch) | |
tree | b07e33bf0b144389db6c2291e21881d9a211b7d9 /src/rpcmisc.cpp | |
parent | 1c0319bb2ba227b67a10563ae5c9f65f4358c472 (diff) | |
parent | 787ee0c91394b0ae16ca2500dbacf9349e65b6bc (diff) | |
download | bitcoin-54f102248b183618ed7bd198c995232c89dc3152.tar.xz |
Merge pull request #3843
787ee0c Check redeemScript size does not exceed 520 byte limit (Peter Todd)
4d79098 Increase IsStandard() scriptSig length (Peter Todd)
f80cffa Do not trigger a DoS ban if SCRIPT_VERIFY_NULLDUMMY fails (Peter Todd)
6380180 Add rejection of non-null CHECKMULTISIG dummy values (Peter Todd)
29c1749 Let tx (in)valid tests use any SCRIPT_VERIFY flag (Peter Todd)
68f7d1d Create (MANDATORY|STANDARD)_SCRIPT_VERIFY_FLAGS constants (Peter Todd)
Diffstat (limited to 'src/rpcmisc.cpp')
-rw-r--r-- | src/rpcmisc.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/rpcmisc.cpp b/src/rpcmisc.cpp index ae154f2ae4..a2694d458a 100644 --- a/src/rpcmisc.cpp +++ b/src/rpcmisc.cpp @@ -176,7 +176,7 @@ Value validateaddress(const Array& params, bool fHelp) // // Used by addmultisigaddress / createmultisig: // -CScript _createmultisig(const Array& params) +CScript _createmultisig_redeemScript(const Array& params) { int nRequired = params[0].get_int(); const Array& keys = params[1].get_array(); @@ -228,6 +228,11 @@ CScript _createmultisig(const Array& params) } CScript result; result.SetMultisig(nRequired, pubkeys); + + if (result.size() > MAX_SCRIPT_ELEMENT_SIZE) + throw runtime_error( + strprintf("redeemScript exceeds size limit: %d > %d", result.size(), MAX_SCRIPT_ELEMENT_SIZE)); + return result; } @@ -263,7 +268,7 @@ Value createmultisig(const Array& params, bool fHelp) } // Construct using pay-to-script-hash: - CScript inner = _createmultisig(params); + CScript inner = _createmultisig_redeemScript(params); CScriptID innerID = inner.GetID(); CBitcoinAddress address(innerID); |