Fix 'The value of offset is out of range.'

This commit is contained in:
SpreedBLood 2021-03-13 03:13:03 +01:00
parent c0bd2fa6c1
commit f52e7773a3

View File

@ -32,7 +32,7 @@ function readFillStyle(buffer) {
*/ */
fillStyleType : type fillStyleType : type
}; };
switch (type) { switch (type) {
case 0x00: case 0x00:
fillStyle.color = buffer.readRGBA(); fillStyle.color = buffer.readRGBA();
@ -45,7 +45,7 @@ function readFillStyle(buffer) {
break; break;
} }
return fillStyle; return fillStyle;
} }
function readLineStyle(buffer) { function readLineStyle(buffer) {
@ -92,7 +92,7 @@ function SWFBuffer( buffer ) {
} }
/** /**
* Reads unsigned 16 or 32 Little Endian Bits * Reads unsigned 16 or 32 Little Endian Bits
* and advance pointer to next bits / 8 bytes * and advance pointer to next bits / 8 bytes
* *
* @param {Number} bits * @param {Number} bits
@ -158,7 +158,7 @@ SWFBuffer.prototype.readString = function(encoding) {
* @return {Array} Array of RGB value * @return {Array} Array of RGB value
*/ */
SWFBuffer.prototype.readRGB = function() { SWFBuffer.prototype.readRGB = function() {
return [this.readUInt8(), this.readUInt8(), this.readUInt8()]; return [this.readUInt8(), this.readUInt8(), this.readUInt8()];
}; };
@ -196,16 +196,20 @@ SWFBuffer.prototype.readShapeWithStyle = function() {
* @return {Object} Tag code and length * @return {Object} Tag code and length
*/ */
SWFBuffer.prototype.readTagCodeAndLength = function() { SWFBuffer.prototype.readTagCodeAndLength = function() {
if (this.pointer === this.length) {
return false;
}
var n = this.readUIntLE(16) var n = this.readUIntLE(16)
, tagType = n >> 6 , tagType = n >> 6
, tagLength = n & RECORDHEADER_LENTH_FULL; , tagLength = n & RECORDHEADER_LENTH_FULL;
if ( n === 0 ) if ( n === 0 )
return false; return false;
if ( tagLength === RECORDHEADER_LENTH_FULL ) if ( tagLength === RECORDHEADER_LENTH_FULL )
tagLength = this.readUIntLE(32); tagLength = this.readUIntLE(32);
return { code : tagType, length : tagLength }; return { code : tagType, length : tagLength };
}; };