Merge pull request #188 from ryanxcharles/bug/script-push-data

script parsing should be more loose on pushdata
This commit is contained in:
Ryan X. Charles 2014-03-25 09:42:42 -04:00
commit 3ad329f032
2 changed files with 9 additions and 3 deletions

View File

@ -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);

View File

@ -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];