From 8b035fd9a8734f7aa4563f0ee65c6058a86b9a2e Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Sun, 15 Jan 2017 22:16:57 -0800 Subject: [PATCH] opcode: do not continue reading after a bad push. --- lib/script/opcode.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lib/script/opcode.js b/lib/script/opcode.js index 2b71a19d..e732dce1 100644 --- a/lib/script/opcode.js +++ b/lib/script/opcode.js @@ -125,6 +125,7 @@ Opcode.prototype.fromReader = function fromReader(br) { if (op >= 0x01 && op <= 0x4b) { if (br.left() < op) { this.value = -1; + br.seek(br.left()); return this; } this.value = op; @@ -141,6 +142,7 @@ Opcode.prototype.fromReader = function fromReader(br) { size = br.readU8(); if (br.left() < size) { this.value = -1; + br.seek(br.left()); break; } this.value = op; @@ -149,11 +151,13 @@ Opcode.prototype.fromReader = function fromReader(br) { case opcodes.OP_PUSHDATA2: if (br.left() < 2) { this.value = -1; + br.seek(br.left()); break; } size = br.readU16(); if (br.left() < size) { this.value = -1; + br.seek(br.left()); break; } this.value = op; @@ -162,11 +166,13 @@ Opcode.prototype.fromReader = function fromReader(br) { case opcodes.OP_PUSHDATA4: if (br.left() < 4) { this.value = -1; + br.seek(br.left()); break; } size = br.readU32(); if (br.left() < size) { this.value = -1; + br.seek(br.left()); break; } this.value = op;