doc: more accurate zlib windowBits information
Fixes: https://github.com/nodejs/node/issues/14847 PR-URL: https://github.com/nodejs/node/pull/16511 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Refael Ackermann <refack@gmail.com>
This commit is contained in:
parent
241eb6122e
commit
25ef9d2db6
@ -459,12 +459,11 @@ added: v0.5.8
|
||||
Creates and returns a new [DeflateRaw][] object with the given [options][].
|
||||
|
||||
*Note*: An upgrade of zlib from 1.2.8 to 1.2.11 changed behavior when windowBits
|
||||
is set to 8 for raw deflate streams. zlib does not have a working implementation
|
||||
of an 8-bit Window for raw deflate streams and would automatically set windowBit
|
||||
to 9 if initially set to 8. Newer versions of zlib will throw an exception.
|
||||
This creates a potential DOS vector, and as such the behavior ahs been reverted
|
||||
in Node.js 8, 6, and 4. Node.js version 9 and higher will throw when windowBits
|
||||
is set to 8.
|
||||
is set to 8 for raw deflate streams. zlib would automatically set windowBits
|
||||
to 9 if was initially set to 8. Newer versions of zlib will throw an exception,
|
||||
so Node.js restored the original behavior of upgrading a value of 8 to 9,
|
||||
since passing `windowBits = 9` to zlib actually results in a compressed stream
|
||||
that effectively uses an 8-bit window only.
|
||||
|
||||
## zlib.createGunzip([options])
|
||||
<!-- YAML
|
||||
|
@ -166,7 +166,8 @@ assert.doesNotThrow(() => {
|
||||
// value of the matching deflate’s windowBits. However, inflate raw with
|
||||
// windowBits = 8 should be able to handle compressed data from a source
|
||||
// that does not know about the silent 8-to-9 upgrade of windowBits
|
||||
// that older versions of zlib/Node perform.
|
||||
// that most versions of zlib/Node perform, and which *still* results in
|
||||
// a valid 8-bit-window zlib stream.
|
||||
node.pipe(zlib.createDeflateRaw({ windowBits: 9 }))
|
||||
.pipe(zlib.createInflateRaw({ windowBits: 8 }))
|
||||
.on('data', (chunk) => reinflated.push(chunk))
|
||||
|
Loading…
x
Reference in New Issue
Block a user