Moves inflateSetDictionary right after inflateInit2 when mode is INFLATERAW, since without the wrapper in appears zlib won't return Z_NEED_DICT as it would otherwise, and will thus attempt inflating without the dictionary, leading to an error.
42 lines
1.3 KiB
JavaScript
42 lines
1.3 KiB
JavaScript
'use strict';
|
|
var common = require('../common');
|
|
var assert = require('assert');
|
|
var zlib = require('zlib');
|
|
|
|
// Should raise an error, not trigger an assertion in src/node_zlib.cc
|
|
(function() {
|
|
var stream = zlib.createInflate();
|
|
|
|
stream.on('error', common.mustCall(function(err) {
|
|
assert(/Missing dictionary/.test(err.message));
|
|
}));
|
|
|
|
// String "test" encoded with dictionary "dict".
|
|
stream.write(Buffer([0x78, 0xBB, 0x04, 0x09, 0x01, 0xA5]));
|
|
})();
|
|
|
|
// Should raise an error, not trigger an assertion in src/node_zlib.cc
|
|
(function() {
|
|
var stream = zlib.createInflate({ dictionary: Buffer('fail') });
|
|
|
|
stream.on('error', common.mustCall(function(err) {
|
|
assert(/Bad dictionary/.test(err.message));
|
|
}));
|
|
|
|
// String "test" encoded with dictionary "dict".
|
|
stream.write(Buffer([0x78, 0xBB, 0x04, 0x09, 0x01, 0xA5]));
|
|
})();
|
|
|
|
// Should raise an error, not trigger an assertion in src/node_zlib.cc
|
|
(function() {
|
|
var stream = zlib.createInflateRaw({ dictionary: Buffer('fail') });
|
|
|
|
stream.on('error', common.mustCall(function(err) {
|
|
// It's not possible to separate invalid dict and invalid data when using
|
|
// the raw format
|
|
assert(/invalid/.test(err.message));
|
|
}));
|
|
|
|
// String "test" encoded with dictionary "dict".
|
|
stream.write(Buffer([0x78, 0xBB, 0x04, 0x09, 0x01, 0xA5]));
|
|
})();
|