diff options
| author | Peter Todd <[email protected]> | 2014-11-10 02:33:19 -0500 |
|---|---|---|
| committer | Pieter Wuille <[email protected]> | 2014-11-20 15:29:28 +0100 |
| commit | ca8158719b17ebdcf1de1e26079b6b896122d0e5 (patch) | |
| tree | 581c5ca00b34e78318b434c9a995e44c73850c01 /src/script/interpreter.cpp | |
| parent | Make STRICTENC invalid pubkeys fail the script rather than the opcode. (diff) | |
| download | discoin-ca8158719b17ebdcf1de1e26079b6b896122d0e5.tar.xz discoin-ca8158719b17ebdcf1de1e26079b6b896122d0e5.zip | |
Test the exact order of CHECKMULTISIG sig/pubkey evaluation
Possible with STRICTENC
Diffstat (limited to 'src/script/interpreter.cpp')
| -rw-r--r-- | src/script/interpreter.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/script/interpreter.cpp b/src/script/interpreter.cpp index a2a2edce6..5eda23731 100644 --- a/src/script/interpreter.cpp +++ b/src/script/interpreter.cpp @@ -855,6 +855,9 @@ bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, un valtype& vchSig = stacktop(-isig); valtype& vchPubKey = stacktop(-ikey); + // Note how this makes the exact order of pubkey/signature evaluation + // distinguishable by CHECKMULTISIG NOT if the STRICTENC flag is set. + // See the script_(in)valid tests for details. if (!CheckSignatureEncoding(vchSig, flags, serror) || !CheckPubKeyEncoding(vchPubKey, flags, serror)) { // serror is set return false; @@ -871,7 +874,8 @@ bool EvalScript(vector<vector<unsigned char> >& stack, const CScript& script, un nKeysCount--; // If there are more signatures left than keys left, - // then too many signatures have failed + // then too many signatures have failed. Exit early, + // without checking any further signatures. if (nSigsCount > nKeysCount) fSuccess = false; } |