node/test/parallel/test-zlib-dictionary-fail.js
Tarjei Husøy 9a02414a29 zlib: fix raw inflate with custom dictionary
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.
2016-11-22 12:57:57 +08:00

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]));
})();