From f89dcda0a23fda74a6b98315b43ae4876bee0db1 Mon Sep 17 00:00:00 2001 From: "Ryan X. Charles" Date: Mon, 24 Mar 2014 20:18:08 -0400 Subject: [PATCH] script parsing should be more loose on pushdata This testnet transaction was being parsed incorrectly: cc64de74ba7002bbf4e3646824d7bbf0920004fb2ce45aa7270c4116ff11b715 Script was throwing an error when it should not have been. The error was that PUSHDATA1 was trying to push 117 bytes to the stack, but it was followed by only 75 bytes. But this transaction is accepted as valid by bitcoin-qt on testnet. So we are mistaken by throwing an error in this case. --- Script.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/Script.js b/Script.js index ae4e479..ada391d 100644 --- a/Script.js +++ b/Script.js @@ -58,17 +58,14 @@ Script.prototype.parse = function() { } else if (opcode === OP_PUSHDATA1) { len = parser.word8(); chunk = parser.buffer(len); - if (chunk.length < len) throw new Error('Invalid data size: not enough data'); this.chunks.push(chunk); } else if (opcode === OP_PUSHDATA2) { len = parser.word16le(); chunk = parser.buffer(len); - if (chunk.length < len) throw new Error('Invalid data size: not enough data'); this.chunks.push(chunk); } else if (opcode === OP_PUSHDATA4) { len = parser.word32le(); chunk = parser.buffer(len); - if (chunk.length < len) throw new Error('Invalid data size: not enough data'); this.chunks.push(chunk); } else { this.chunks.push(opcode);