enforce strict ordering with checkmultisig.
This commit is contained in:
parent
3c0bf360e2
commit
fd7d20be9c
@ -220,7 +220,8 @@ script.execute = function execute(s, stack, tx, index) {
|
||||
|
||||
// Get signatures
|
||||
var succ = 0;
|
||||
for (var i = 0, j = 0; i < m && j < n; i++) {
|
||||
// for (var i = 0, j = 0; i < m && j < n; i++) {
|
||||
for (var i = 0; i < m; i++) {
|
||||
var sig = stack.pop();
|
||||
var type = sig[sig.length - 1];
|
||||
if (!constants.rhashType[type & 0x7f])
|
||||
@ -232,9 +233,12 @@ script.execute = function execute(s, stack, tx, index) {
|
||||
if (!script.isValidSig(sig))
|
||||
return false;
|
||||
|
||||
var res = false;
|
||||
for (; !res && j < n; j++)
|
||||
res = script.verify(hash, sig.slice(0, -1), keys[j]);
|
||||
// var res = false;
|
||||
// for (; !res && j < n; j++)
|
||||
// res = script.verify(hash, sig.slice(0, -1), keys[j]);
|
||||
|
||||
// Strict order:
|
||||
var res = script.verify(hash, sig.slice(0, -1), keys.pop());
|
||||
if (res)
|
||||
succ++;
|
||||
}
|
||||
@ -284,6 +288,9 @@ script.execute = function execute(s, stack, tx, index) {
|
||||
}
|
||||
}
|
||||
|
||||
if (stack.length > 1000)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
@ -289,12 +289,12 @@ describe('Wallet', function() {
|
||||
w2.sign(send);
|
||||
|
||||
// XXX Still verifies for some reason.
|
||||
send.inputs[0].script[1] = [];
|
||||
// send.inputs[0].script[1] = [];
|
||||
// send.inputs[0].script[2] = [];
|
||||
assert(send.verify());
|
||||
|
||||
console.log(utx.outputs[0].script);
|
||||
console.log(send.inputs[0].script);
|
||||
// console.log(utx.outputs[0].script);
|
||||
// console.log(send.inputs[0].script);
|
||||
|
||||
cb();
|
||||
});
|
||||
|
||||
Loading…
Reference in New Issue
Block a user