diff options
author | Neil Williams <neil@copycopy.cc> | 2015-09-08 14:58:24 +0100 |
---|---|---|
committer | Neil Williams <neil@copycopy.cc> | 2015-09-09 09:44:08 +0000 |
commit | 3c68f26c052b06da9b43bb775cbe5a539fccb0c3 (patch) | |
tree | b5e7bb4ad8c6c3f4b7dfe5a33cea54d4f9e56f50 /src | |
parent | 5598cebd35157890af20fa824fc9f1c92340270c (diff) |
Fix null pointer use within Jpeg2000JasperReaderv5.5.1
jas_image_create will return null if the image create fails, so the
return value must be checked.
Task-number: QTBUG-47998
Change-Id: I4cb8a44742ca30d1f0b335b2db2c7f283c968c78
Reviewed-by: aavit <eirik.aavitsland@theqtcompany.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/imageformats/jp2/qjp2handler.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/plugins/imageformats/jp2/qjp2handler.cpp b/src/plugins/imageformats/jp2/qjp2handler.cpp index f69538c..f8f35b4 100644 --- a/src/plugins/imageformats/jp2/qjp2handler.cpp +++ b/src/plugins/imageformats/jp2/qjp2handler.cpp @@ -777,6 +777,9 @@ bool Jpeg2000JasperReader::write(const QImage &image, int quality) if (qtDepth == 32) { // RGB(A) jasper_image = newRGBAImage(qtWidth, qtHeight, qtImage.hasAlphaChannel()); + if (!jasper_image) + return false; + if (qtImage.hasAlphaChannel()) copyQtJasper(&Jpeg2000JasperReader::copyScanlineQtJasperRGBA); else @@ -785,6 +788,9 @@ bool Jpeg2000JasperReader::write(const QImage &image, int quality) // Color mapped grayscale if (qtImage.allGray()) { jasper_image = newGrayscaleImage(qtWidth, qtHeight, qtImage.hasAlphaChannel()); + if (!jasper_image) + return false; + if (qtImage.hasAlphaChannel()) copyQtJasper(&Jpeg2000JasperReader::copyScanlineQtJasperColormapGrayscaleA); else @@ -792,6 +798,9 @@ bool Jpeg2000JasperReader::write(const QImage &image, int quality) } else { // Color mapped color jasper_image = newRGBAImage(qtWidth, qtHeight, qtImage.hasAlphaChannel()); + if (!jasper_image) + return false; + if (qtImage.hasAlphaChannel()) copyQtJasper(&Jpeg2000JasperReader::copyScanlineQtJasperColormapRGBA); else @@ -1041,6 +1050,11 @@ jas_image_t* Jpeg2000JasperReader::newRGBAImage(const int width, jas_image_t *newImage = jas_image_create(jasNumComponents, params, JAS_CLRSPC_SRGB); + if (!newImage) { + delete[] params; + return 0; + } + jas_image_setcmpttype(newImage, 0, JAS_IMAGE_CT_RGB_R); jas_image_setcmpttype(newImage, 1, JAS_IMAGE_CT_RGB_G); jas_image_setcmpttype(newImage, 2, JAS_IMAGE_CT_RGB_B); @@ -1074,6 +1088,8 @@ jas_image_t *Jpeg2000JasperReader::newGrayscaleImage(const int width, jasNumComponents = alpha ? 2 : 1; jas_image_cmptparm_t param = createComponentMetadata(width, height); jas_image_t *newImage = jas_image_create(1, ¶m, JAS_CLRSPC_SGRAY); + if (!newImage) + return 0; jas_image_setcmpttype(newImage, 0, JAS_IMAGE_CT_GRAY_Y); |