mirror of
https://github.com/nodejs/node.git
synced 2025-05-06 00:30:06 +00:00

On 4 April 2017, Node.js versions v4.8.2 and v6.10.2 were released. These versions bumped the vendored zlib library from v1.2.8 to v1.2.11 in response to what it describes as low-severity CVEs. In zlib v1.2.9, a change was made that causes an error to be raised when a raw deflate stream is initialised with windowBits set to 8. In zlib v1.2.9, 8 become an invalid value for this parameter, and Node's zlib module will crash if you call this: ``` zlib.createDeflateRaw({windowBits: 8}) ``` On some versions this crashes Node and you cannot recover from it, while on some versions it throws an exception. The permessage-deflate library up to version v0.1.5 does make such a call with no try/catch This commit reverts to the original behavior of zlib by gracefully changed windowBits: 8 to windowBits: 9 for raw deflate streams. Original-PR-URL: https://github.com/nodejs-private/node-private/pull/95 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Evan Lucas <evanlucas@me.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Sam Roberts <vieuxtech@gmail.com> 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>
41 lines
776 B
JavaScript
41 lines
776 B
JavaScript
'use strict';
|
|
|
|
const common = require('../common');
|
|
|
|
const assert = require('assert');
|
|
const zlib = require('zlib');
|
|
|
|
common.expectsError(
|
|
() => zlib.createGzip({ chunkSize: 0 }),
|
|
{
|
|
code: 'ERR_INVALID_OPT_VALUE',
|
|
type: RangeError
|
|
}
|
|
);
|
|
|
|
common.expectsError(
|
|
() => zlib.createGzip({ windowBits: 0 }),
|
|
{
|
|
code: 'ERR_INVALID_OPT_VALUE',
|
|
type: RangeError
|
|
}
|
|
);
|
|
|
|
common.expectsError(
|
|
() => zlib.createGzip({ memLevel: 0 }),
|
|
{
|
|
code: 'ERR_INVALID_OPT_VALUE',
|
|
type: RangeError
|
|
}
|
|
);
|
|
|
|
{
|
|
const stream = zlib.createGzip({ level: NaN });
|
|
assert.strictEqual(stream._level, zlib.constants.Z_DEFAULT_COMPRESSION);
|
|
}
|
|
|
|
{
|
|
const stream = zlib.createGzip({ strategy: NaN });
|
|
assert.strictEqual(stream._strategy, zlib.constants.Z_DEFAULT_STRATEGY);
|
|
}
|