From c8f80baeea7026b4d578ba7ea0d1dcb3fbb25ecc Mon Sep 17 00:00:00 2001 From: "trop[bot]" Date: Wed, 13 Mar 2019 18:21:10 -0700 Subject: [PATCH] fix: don't crash when nativeImage.createFromBuffer() called with invalid buffer (#17374) --- atom/common/api/atom_api_native_image.cc | 5 +++++ spec/api-native-image-spec.js | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/atom/common/api/atom_api_native_image.cc b/atom/common/api/atom_api_native_image.cc index 9f70607badf23..3219e90e6f5da 100644 --- a/atom/common/api/atom_api_native_image.cc +++ b/atom/common/api/atom_api_native_image.cc @@ -509,6 +509,11 @@ mate::Handle NativeImage::CreateFromPath( mate::Handle NativeImage::CreateFromBuffer( mate::Arguments* args, v8::Local buffer) { + if (!node::Buffer::HasInstance(buffer)) { + args->ThrowError("buffer must be a node Buffer"); + return mate::Handle(); + } + int width = 0; int height = 0; double scale_factor = 1.; diff --git a/spec/api-native-image-spec.js b/spec/api-native-image-spec.js index e609709969712..eb9ab07742759 100644 --- a/spec/api-native-image-spec.js +++ b/spec/api-native-image-spec.js @@ -127,7 +127,7 @@ describe('nativeImage module', () => { }) }) - describe('createFromBuffer(buffer, scaleFactor)', () => { + describe('createFromBuffer(buffer, options)', () => { it('returns an empty image when the buffer is empty', () => { expect(nativeImage.createFromBuffer(Buffer.from([])).isEmpty()) }) @@ -165,6 +165,11 @@ describe('nativeImage module', () => { { width: 538, height: 190, scaleFactor: 2.0 }) expect(imageI.getSize()).to.deep.equal({ width: 269, height: 95 }) }) + + it('throws on invalid arguments', () => { + expect(() => nativeImage.createFromBuffer(null)).to.throw('buffer must be a node Buffer') + expect(() => nativeImage.createFromBuffer([12, 14, 124, 12])).to.throw('buffer must be a node Buffer') + }) }) describe('createFromDataURL(dataURL)', () => {