diff --git a/lib/bcoin/script.js b/lib/bcoin/script.js index 35a8a3c9..dd1eb65f 100644 --- a/lib/bcoin/script.js +++ b/lib/bcoin/script.js @@ -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; }; diff --git a/test/wallet-test.js b/test/wallet-test.js index c1069a8d..41fdf373 100644 --- a/test/wallet-test.js +++ b/test/wallet-test.js @@ -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(); });