summaryrefslogtreecommitdiff
path: root/third_party/libtiff/tif_dir.c
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-01-09 09:50:50 -0500
committerChromium commit bot <commit-bot@chromium.org>2017-01-09 15:32:48 +0000
commit5f92eab76505fc6be2e5373390591a55be489b21 (patch)
treea4c230681c601cccc50f1e770bf6cfd3f91fe387 /third_party/libtiff/tif_dir.c
parent0d164f894472b364b0673471eda49b5d4f209c96 (diff)
downloadpdfium-5f92eab76505fc6be2e5373390591a55be489b21.tar.xz
[libtiff] Validate refblackwhite values
The td_refblackwhite value is currently assigned without validation. This may pose an issue as the image can specify the value as nan. This will cause problems later when we use the nan in calcluations. This CL validates each of the float values are not nan and if they are sets them to the default provided by the TIFF spec v6. BUG=chromium:632883 Change-Id: I17b01f744d3f5247c4bd3f42765a27b611dc7d8c Reviewed-on: https://pdfium-review.googlesource.com/2151 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'third_party/libtiff/tif_dir.c')
-rw-r--r--third_party/libtiff/tif_dir.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/third_party/libtiff/tif_dir.c b/third_party/libtiff/tif_dir.c
index 73212c02db..16ce3d3cee 100644
--- a/third_party/libtiff/tif_dir.c
+++ b/third_party/libtiff/tif_dir.c
@@ -426,6 +426,14 @@ _TIFFVSetField(TIFF* tif, uint32 tag, va_list ap)
case TIFFTAG_REFERENCEBLACKWHITE:
/* XXX should check for null range */
_TIFFsetFloatArray(&td->td_refblackwhite, va_arg(ap, float*), 6);
+ for (int i = 0; i < 6; i++) {
+ if (isnan(td->td_refblackwhite[i])) {
+ if (i % 2 == 0)
+ td->td_refblackwhite[i] = 0;
+ else
+ td->td_refblackwhite[i] = pow(2, td->td_bitspersample) - 1;
+ }
+ }
break;
case TIFFTAG_INKNAMES:
v = (uint16) va_arg(ap, uint16_vap);