Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b514bd2

Browse filesBrowse files
committed
zlib: use RangeError/TypeError consistently
PR-URL: #11391 Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Sam Roberts <vieuxtech@gmail.com>
1 parent 8e69f7e commit b514bd2
Copy full SHA for b514bd2

File tree

Expand file treeCollapse file tree

3 files changed

+30
-28
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

3 files changed

+30
-28
lines changed
Open diff view settings
Collapse file

‎lib/zlib.js‎

Copy file name to clipboardExpand all lines: lib/zlib.js
+16-14Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ for (var ck = 0; ck < ckeys.length; ck++) {
3131
codes[codes[ckey]] = ckey;
3232
}
3333

34-
function isValidFlushFlag(flag) {
35-
return flag >= constants.Z_NO_FLUSH &&
36-
flag <= constants.Z_BLOCK;
34+
function isInvalidFlushFlag(flag) {
35+
return typeof flag !== 'number' ||
36+
flag < constants.Z_NO_FLUSH ||
37+
flag > constants.Z_BLOCK;
3738

3839
// Covers: constants.Z_NO_FLUSH (0),
3940
// constants.Z_PARTIAL_FLUSH (1),
@@ -141,11 +142,11 @@ class Zlib extends Transform {
141142
this._opts = opts;
142143
this._chunkSize = opts.chunkSize || constants.Z_DEFAULT_CHUNK;
143144

144-
if (opts.flush && !isValidFlushFlag(opts.flush)) {
145-
throw new Error('Invalid flush flag: ' + opts.flush);
145+
if (opts.flush && isInvalidFlushFlag(opts.flush)) {
146+
throw new RangeError('Invalid flush flag: ' + opts.flush);
146147
}
147-
if (opts.finishFlush && !isValidFlushFlag(opts.finishFlush)) {
148-
throw new Error('Invalid flush flag: ' + opts.finishFlush);
148+
if (opts.finishFlush && isInvalidFlushFlag(opts.finishFlush)) {
149+
throw new RangeError('Invalid flush flag: ' + opts.finishFlush);
149150
}
150151

151152
this._flushFlag = opts.flush || constants.Z_NO_FLUSH;
@@ -154,37 +155,38 @@ class Zlib extends Transform {
154155

155156
if (opts.chunkSize) {
156157
if (opts.chunkSize < constants.Z_MIN_CHUNK) {
157-
throw new Error('Invalid chunk size: ' + opts.chunkSize);
158+
throw new RangeError('Invalid chunk size: ' + opts.chunkSize);
158159
}
159160
}
160161

161162
if (opts.windowBits) {
162163
if (opts.windowBits < constants.Z_MIN_WINDOWBITS ||
163164
opts.windowBits > constants.Z_MAX_WINDOWBITS) {
164-
throw new Error('Invalid windowBits: ' + opts.windowBits);
165+
throw new RangeError('Invalid windowBits: ' + opts.windowBits);
165166
}
166167
}
167168

168169
if (opts.level) {
169170
if (opts.level < constants.Z_MIN_LEVEL ||
170171
opts.level > constants.Z_MAX_LEVEL) {
171-
throw new Error('Invalid compression level: ' + opts.level);
172+
throw new RangeError('Invalid compression level: ' + opts.level);
172173
}
173174
}
174175

175176
if (opts.memLevel) {
176177
if (opts.memLevel < constants.Z_MIN_MEMLEVEL ||
177178
opts.memLevel > constants.Z_MAX_MEMLEVEL) {
178-
throw new Error('Invalid memLevel: ' + opts.memLevel);
179+
throw new RangeError('Invalid memLevel: ' + opts.memLevel);
179180
}
180181
}
181182

182183
if (opts.strategy && isInvalidStrategy(opts.strategy))
183-
throw new Error('Invalid strategy: ' + opts.strategy);
184+
throw new TypeError('Invalid strategy: ' + opts.strategy);
184185

185186
if (opts.dictionary) {
186187
if (!(opts.dictionary instanceof Buffer)) {
187-
throw new Error('Invalid dictionary: it should be a Buffer instance');
188+
throw new TypeError(
189+
'Invalid dictionary: it should be a Buffer instance');
188190
}
189191
}
190192

@@ -280,7 +282,7 @@ class Zlib extends Transform {
280282
var last = ending && (!chunk || ws.length === chunk.length);
281283

282284
if (chunk !== null && !(chunk instanceof Buffer))
283-
return cb(new Error('invalid input'));
285+
return cb(new TypeError('invalid input'));
284286

285287
if (!this._handle)
286288
return cb(new Error('zlib binding closed'));
Collapse file

‎test/parallel/test-zlib-deflate-constructors.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-zlib-deflate-constructors.js
+10-10Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ assert.ok(new zlib.DeflateRaw() instanceof zlib.DeflateRaw);
1515
// Throws if `opts.chunkSize` is invalid
1616
assert.throws(
1717
() => { new zlib.Deflate({chunkSize: -Infinity}); },
18-
/^Error: Invalid chunk size: -Infinity$/
18+
/^RangeError: Invalid chunk size: -Infinity$/
1919
);
2020

2121
// Confirm that maximum chunk size cannot be exceeded because it is `Infinity`.
@@ -24,23 +24,23 @@ assert.strictEqual(zlib.constants.Z_MAX_CHUNK, Infinity);
2424
// Throws if `opts.windowBits` is invalid
2525
assert.throws(
2626
() => { new zlib.Deflate({windowBits: -Infinity}); },
27-
/^Error: Invalid windowBits: -Infinity$/
27+
/^RangeError: Invalid windowBits: -Infinity$/
2828
);
2929

3030
assert.throws(
3131
() => { new zlib.Deflate({windowBits: Infinity}); },
32-
/^Error: Invalid windowBits: Infinity$/
32+
/^RangeError: Invalid windowBits: Infinity$/
3333
);
3434

3535
// Throws if `opts.level` is invalid
3636
assert.throws(
3737
() => { new zlib.Deflate({level: -Infinity}); },
38-
/^Error: Invalid compression level: -Infinity$/
38+
/^RangeError: Invalid compression level: -Infinity$/
3939
);
4040

4141
assert.throws(
4242
() => { new zlib.Deflate({level: Infinity}); },
43-
/^Error: Invalid compression level: Infinity$/
43+
/^RangeError: Invalid compression level: Infinity$/
4444
);
4545

4646
// Throws a RangeError if `level` invalid in `Deflate.prototype.params()`
@@ -57,12 +57,12 @@ assert.throws(
5757
// Throws if `opts.memLevel` is invalid
5858
assert.throws(
5959
() => { new zlib.Deflate({memLevel: -Infinity}); },
60-
/^Error: Invalid memLevel: -Infinity$/
60+
/^RangeError: Invalid memLevel: -Infinity$/
6161
);
6262

6363
assert.throws(
6464
() => { new zlib.Deflate({memLevel: Infinity}); },
65-
/^Error: Invalid memLevel: Infinity$/
65+
/^RangeError: Invalid memLevel: Infinity$/
6666
);
6767

6868
// Does not throw if opts.strategy is valid
@@ -89,13 +89,13 @@ assert.doesNotThrow(
8989
// Throws if opt.strategy is the wrong type.
9090
assert.throws(
9191
() => { new zlib.Deflate({strategy: '' + zlib.constants.Z_RLE }); },
92-
/^Error: Invalid strategy: 3$/
92+
/^TypeError: Invalid strategy: 3$/
9393
);
9494

9595
// Throws if opts.strategy is invalid
9696
assert.throws(
9797
() => { new zlib.Deflate({strategy: 'this is a bogus strategy'}); },
98-
/^Error: Invalid strategy: this is a bogus strategy$/
98+
/^TypeError: Invalid strategy: this is a bogus strategy$/
9999
);
100100

101101
// Throws TypeError if `strategy` is invalid in `Deflate.prototype.params()`
@@ -107,5 +107,5 @@ assert.throws(
107107
// Throws if opts.dictionary is not a Buffer
108108
assert.throws(
109109
() => { new zlib.Deflate({dictionary: 'not a buffer'}); },
110-
/^Error: Invalid dictionary: it should be a Buffer instance$/
110+
/^TypeError: Invalid dictionary: it should be a Buffer instance$/
111111
);
Collapse file

‎test/parallel/test-zlib-flush-flags.js‎

Copy file name to clipboardExpand all lines: test/parallel/test-zlib-flush-flags.js
+4-4Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,20 @@ assert.doesNotThrow(() => {
99

1010
assert.throws(() => {
1111
zlib.createGzip({ flush: 'foobar' });
12-
}, /Invalid flush flag: foobar/);
12+
}, /^RangeError: Invalid flush flag: foobar$/);
1313

1414
assert.throws(() => {
1515
zlib.createGzip({ flush: 10000 });
16-
}, /Invalid flush flag: 10000/);
16+
}, /^RangeError: Invalid flush flag: 10000$/);
1717

1818
assert.doesNotThrow(() => {
1919
zlib.createGzip({ finishFlush: zlib.constants.Z_SYNC_FLUSH });
2020
});
2121

2222
assert.throws(() => {
2323
zlib.createGzip({ finishFlush: 'foobar' });
24-
}, /Invalid flush flag: foobar/);
24+
}, /^RangeError: Invalid flush flag: foobar$/);
2525

2626
assert.throws(() => {
2727
zlib.createGzip({ finishFlush: 10000 });
28-
}, /Invalid flush flag: 10000/);
28+
}, /^RangeError: Invalid flush flag: 10000$/);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.