diff --git a/src/core/stream.js b/src/core/stream.js index 669cab152..8688434d6 100644 --- a/src/core/stream.js +++ b/src/core/stream.js @@ -430,10 +430,12 @@ var FlateStream = (function FlateStreamClosure() { var codeSize = this.codeSize; var codeBuf = this.codeBuf; + var b; while (codeSize < maxLen) { - var b; if ((b = str.getByte()) === -1) { - error('Bad encoding in flate stream'); + // premature end of stream. code might however still be valid. + // codeSize < codeLen check below guards against incomplete codeVal. + break; } codeBuf |= (b << codeSize); codeSize += 8; @@ -441,7 +443,7 @@ var FlateStream = (function FlateStreamClosure() { var code = codes[codeBuf & ((1 << maxLen) - 1)]; var codeLen = code >> 16; var codeVal = code & 0xffff; - if (codeSize === 0 || codeSize < codeLen || codeLen === 0) { + if (codeLen < 1 || codeSize < codeLen) { error('Bad encoding in flate stream'); } this.codeBuf = (codeBuf >> codeLen);