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); diff --git a/test/test.Script.js b/test/test.Script.js index 1b9e2fb..205192f 100644 --- a/test/test.Script.js +++ b/test/test.Script.js @@ -84,6 +84,15 @@ describe('Script', function() { }); }); + describe('#parse', function() { + it('should parse this valid script', function() { + var scriptHex = '6a0843435000010001004c75726c3d687474702533612532662532666c6f63616c686f7374253361343636313125326663253266324d794a6e5065774c5a6241596a6843666f695652526679733937746d5231516d4b61'; + var script = new Script(new Buffer(scriptHex, 'hex')); + should.exist(script); + script.chunks[2].length.should.equal(75); + }); + }); + testdata.dataScriptAll.forEach(function(datum) { if (datum.length < 2) throw new Error('Invalid test data'); var human = datum[0] + ' ' + datum[1];