mirror of
https://github.com/lovell/sharp.git
synced 2025-07-09 18:40:16 +02:00
Detect empty input and throw a helpful error (#2687)
This commit is contained in:
parent
a688468378
commit
52e4543d31
@ -30,9 +30,15 @@ function _createInputDescriptor (input, inputOptions, containerOptions) {
|
|||||||
inputDescriptor.file = input;
|
inputDescriptor.file = input;
|
||||||
} else if (is.buffer(input)) {
|
} else if (is.buffer(input)) {
|
||||||
// Buffer
|
// Buffer
|
||||||
|
if (input.length === 0) {
|
||||||
|
throw Error('Input Buffer is empty');
|
||||||
|
}
|
||||||
inputDescriptor.buffer = input;
|
inputDescriptor.buffer = input;
|
||||||
} else if (is.uint8Array(input)) {
|
} else if (is.uint8Array(input)) {
|
||||||
// Uint8Array or Uint8ClampedArray
|
// Uint8Array or Uint8ClampedArray
|
||||||
|
if (input.length === 0) {
|
||||||
|
throw Error('Input Bit Array is empty');
|
||||||
|
}
|
||||||
inputDescriptor.buffer = Buffer.from(input.buffer);
|
inputDescriptor.buffer = Buffer.from(input.buffer);
|
||||||
} else if (is.plainObject(input) && !is.defined(inputOptions)) {
|
} else if (is.plainObject(input) && !is.defined(inputOptions)) {
|
||||||
// Plain Object descriptor, e.g. create
|
// Plain Object descriptor, e.g. create
|
||||||
|
@ -74,7 +74,8 @@
|
|||||||
"Christian Flintrup <chr@gigahost.dk>",
|
"Christian Flintrup <chr@gigahost.dk>",
|
||||||
"Manan Jadhav <manan@motionden.com>",
|
"Manan Jadhav <manan@motionden.com>",
|
||||||
"Leon Radley <leon@radley.se>",
|
"Leon Radley <leon@radley.se>",
|
||||||
"alza54 <alza54@thiocod.in>"
|
"alza54 <alza54@thiocod.in>",
|
||||||
|
"Jacob Smith <jacob@frende.me>"
|
||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"install": "(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)",
|
"install": "(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)",
|
||||||
|
@ -335,17 +335,6 @@ describe('Input/output', function () {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
it('Fail when input is empty Buffer', function (done) {
|
|
||||||
sharp(Buffer.alloc(0)).toBuffer().then(function () {
|
|
||||||
assert(false);
|
|
||||||
done();
|
|
||||||
}).catch(function (err) {
|
|
||||||
assert(err instanceof Error);
|
|
||||||
assert.strictEqual('Input buffer contains unsupported image format', err.message);
|
|
||||||
done();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Fail when input is invalid Buffer', function (done) {
|
it('Fail when input is invalid Buffer', function (done) {
|
||||||
sharp(Buffer.from([0x1, 0x2, 0x3, 0x4])).toBuffer().then(function () {
|
sharp(Buffer.from([0x1, 0x2, 0x3, 0x4])).toBuffer().then(function () {
|
||||||
assert(false);
|
assert(false);
|
||||||
|
@ -7,6 +7,18 @@ const fixtures = require('../fixtures');
|
|||||||
|
|
||||||
describe('Raw pixel data', function () {
|
describe('Raw pixel data', function () {
|
||||||
describe('Raw pixel input', function () {
|
describe('Raw pixel input', function () {
|
||||||
|
it('Empty data', function () {
|
||||||
|
assert.throws(function () {
|
||||||
|
sharp(Buffer.from(''));
|
||||||
|
}, /empty/);
|
||||||
|
assert.throws(function () {
|
||||||
|
sharp(new Uint8Array(0));
|
||||||
|
}, /empty/);
|
||||||
|
assert.throws(function () {
|
||||||
|
sharp(new Uint8ClampedArray(0));
|
||||||
|
}, /empty/);
|
||||||
|
});
|
||||||
|
|
||||||
it('Missing options', function () {
|
it('Missing options', function () {
|
||||||
assert.throws(function () {
|
assert.throws(function () {
|
||||||
sharp({ raw: {} });
|
sharp({ raw: {} });
|
||||||
|
Loading…
x
Reference in New Issue
Block a user