aboutsummaryrefslogtreecommitdiff
path: root/src/rpcmisc.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2014-05-09 16:03:34 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2014-05-09 16:09:20 +0200
commit54f102248b183618ed7bd198c995232c89dc3152 (patch)
treeb07e33bf0b144389db6c2291e21881d9a211b7d9 /src/rpcmisc.cpp
parent1c0319bb2ba227b67a10563ae5c9f65f4358c472 (diff)
parent787ee0c91394b0ae16ca2500dbacf9349e65b6bc (diff)
downloadbitcoin-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.cpp9
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);