summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorerouault <erouault>2017-10-23 11:34:26 +0000
committererouault <erouault>2017-10-23 11:34:26 +0000
commit853e72d58e2c202a6bc2a25eefb6eae9cb273538 (patch)
tree04f781e3d60ffff0e59bd0fb494bdd838ee995cf
parent808ef617aa29a75a0a15859e58485ee70f71aec3 (diff)
downloadlibtiff-853e72d58e2c202a6bc2a25eefb6eae9cb273538.tar.gz
* libtiff/tif_getimage.c: avoid floating point division by zero in
initCIELabConversion() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3733 Credit to OSS Fuzz
-rw-r--r--ChangeLog7
-rw-r--r--libtiff/tif_getimage.c10
2 files changed, 15 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 02873f2b..797b2317 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2017-10-23 Even Rouault <even.rouault at spatialys.com>
+
+ * libtiff/tif_getimage.c: avoid floating point division by zero in
+ initCIELabConversion()
+ Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3733
+ Credit to OSS Fuzz
+
2017-10-17 Even Rouault <even.rouault at spatialys.com>
* libtiff/tif_jpeg.c: add compatibility with libjpeg-turbo 1.5.2 that
diff --git a/libtiff/tif_getimage.c b/libtiff/tif_getimage.c
index c51c8894..032d2781 100644
--- a/libtiff/tif_getimage.c
+++ b/libtiff/tif_getimage.c
@@ -1,4 +1,4 @@
-/* $Id: tif_getimage.c,v 1.112 2017-07-24 10:34:14 erouault Exp $ */
+/* $Id: tif_getimage.c,v 1.113 2017-10-23 11:34:26 erouault Exp $ */
/*
* Copyright (c) 1991-1997 Sam Leffler
@@ -2332,6 +2332,13 @@ initCIELabConversion(TIFFRGBAImage* img)
float *whitePoint;
float refWhite[3];
+ TIFFGetFieldDefaulted(img->tif, TIFFTAG_WHITEPOINT, &whitePoint);
+ if (whitePoint[1] == 0.0f ) {
+ TIFFErrorExt(img->tif->tif_clientdata, module,
+ "Invalid value for WhitePoint tag.");
+ return NULL;
+ }
+
if (!img->cielab) {
img->cielab = (TIFFCIELabToRGB *)
_TIFFmalloc(sizeof(TIFFCIELabToRGB));
@@ -2342,7 +2349,6 @@ initCIELabConversion(TIFFRGBAImage* img)
}
}
- TIFFGetFieldDefaulted(img->tif, TIFFTAG_WHITEPOINT, &whitePoint);
refWhite[1] = 100.0F;
refWhite[0] = whitePoint[0] / whitePoint[1] * refWhite[1];
refWhite[2] = (1.0F - whitePoint[0] - whitePoint[1])