From 9dd6510de6340c15e9bcd18a69af5a4115baffb1 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Sat, 12 Jan 2019 16:10:25 +0000 Subject: [PATCH] Expose underlying error message for invalid input #1505 --- docs/changelog.md | 3 +++ package.json | 2 +- src/common.cc | 8 ++++---- test/fixtures/index.js | 1 + test/fixtures/testimgl.jpg | Bin 0 -> 38374 bytes test/unit/metadata.js | 11 +++++++++++ 6 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 test/fixtures/testimgl.jpg diff --git a/docs/changelog.md b/docs/changelog.md index 67fe65ce..f4f3d47a 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -17,6 +17,9 @@ Requires libvips v8.7.0. * Expose `pages` and `pageHeight` metadata for multi-page input images. [#1205](https://github.com/lovell/sharp/issues/1205) +* Expose underlying error message for invalid input. + [#1505](https://github.com/lovell/sharp/issues/1505) + * Prevent mutatation of options passed to `jpeg`. [#1516](https://github.com/lovell/sharp/issues/1516) diff --git a/package.json b/package.json index 0da7a181..3b3bf661 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "documentation": "^9.1.1", "exif-reader": "^1.0.2", "icc": "^1.0.0", - "license-checker": "^24.1.0", + "license-checker": "^25.0.1", "mocha": "^5.2.0", "mock-fs": "^4.7.0", "nyc": "^13.1.0", diff --git a/src/common.cc b/src/common.cc index ca8f10ac..c4b301b6 100644 --- a/src/common.cc +++ b/src/common.cc @@ -245,8 +245,8 @@ namespace sharp { if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) { SetDensity(image, descriptor->density); } - } catch (...) { - throw vips::VError("Input buffer has corrupt header"); + } catch (vips::VError const &err) { + throw vips::VError(std::string("Input buffer has corrupt header: ") + err.what()); } } else { throw vips::VError("Input buffer contains unsupported image format"); @@ -287,8 +287,8 @@ namespace sharp { if (imageType == ImageType::SVG || imageType == ImageType::PDF || imageType == ImageType::MAGICK) { SetDensity(image, descriptor->density); } - } catch (...) { - throw vips::VError("Input file has corrupt header"); + } catch (vips::VError const &err) { + throw vips::VError(std::string("Input file has corrupt header: ") + err.what()); } } else { throw vips::VError("Input file is missing or of an unsupported image format"); diff --git a/test/fixtures/index.js b/test/fixtures/index.js index 28e9a0b2..3b335065 100644 --- a/test/fixtures/index.js +++ b/test/fixtures/index.js @@ -70,6 +70,7 @@ module.exports = { inputJpgCenteredImage: getPath('centered_image.jpeg'), inputJpgRandom: getPath('random.jpg'), // convert -size 200x200 xc: +noise Random random.jpg inputJpgThRandom: getPath('thRandom.jpg'), // convert random.jpg -channel G -threshold 5% -separate +channel -negate thRandom.jpg + inputJpgLossless: getPath('testimgl.jpg'), // Lossless JPEG from ftp://ftp.fu-berlin.de/unix/X11/graphics/ImageMagick/delegates/ljpeg-6b.tar.gz inputPng: getPath('50020484-00001.png'), // http://c.searspartsdirect.com/lis_png/PLDM/50020484-00001.png inputPngWithTransparency: getPath('blackbug.png'), // public domain diff --git a/test/fixtures/testimgl.jpg b/test/fixtures/testimgl.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82b6b0366c9ca609563631a322d874736e116a51 GIT binary patch literal 38374 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 literal 0 HcmV?d00001 diff --git a/test/unit/metadata.js b/test/unit/metadata.js index fd07ab20..a8406e67 100644 --- a/test/unit/metadata.js +++ b/test/unit/metadata.js @@ -457,6 +457,7 @@ describe('Image metadata', function () { sharp(fixtures.inputJpgWithCorruptHeader) .metadata(function (err) { assert.strictEqual(true, !!err); + assert.strictEqual(true, /Input file has corrupt header: VipsJpeg: Premature end of JPEG file/.test(err.message)); done(); }); }); @@ -465,6 +466,16 @@ describe('Image metadata', function () { sharp(fs.readFileSync(fixtures.inputJpgWithCorruptHeader)) .metadata(function (err) { assert.strictEqual(true, !!err); + assert.strictEqual(true, /Input buffer has corrupt header: VipsJpeg: Premature end of JPEG file/.test(err.message)); + done(); + }); + }); + + it('Unsupported lossless JPEG passes underlying error message', function (done) { + sharp(fixtures.inputJpgLossless) + .metadata(function (err) { + assert.strictEqual(true, !!err); + assert.strictEqual(true, /Input file has corrupt header: VipsJpeg: Unsupported JPEG process: SOF type 0xc3/.test(err.message)); done(); }); });