Subject: CVS commit: pkgsrc/graphics/tiff
From: Havard Eidnes
Date: 2017-05-29 15:44:05
Message id: 20170529134405.72D9FFBE4@cvs.NetBSD.org

Log Message:
Update tiff to version 4.0.8.

Pkgsrc changes:
 * Adapt PLIST, remove patches for now-integrated bugfixes.

As the release announcement says:

   All of the changes are bug and security fixes.

Upstream changes:

CHANGES IN LIBTIFF:
 * libtiff/tif_getimage.c, libtiff/tif_open.c: add parenthesis to
   fix cppcheck clarifyCalculation warnings * libtiff/tif_predict.c,
   libtiff/tif_print.c: fix printf unsigned vs signed formatting
   (cppcheck invalidPrintfArgType_uint warnings)
 * libtiff/tif_read.c, libtiff/tiffiop.h: fix uint32 overflow in
   TIFFReadEncodedStrip() that caused an integer division by zero.
   Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2596
 * libtiff/tif_pixarlog.c, libtiff/tif_luv.c: fix heap-based buffer
   overflow on generation of PixarLog / LUV compressed files, with
   ColorMap, TransferFunction attached and nasty plays with
   bitspersample. The fix for LUV has not been tested, but suffers
   from the same kind of issue of PixarLog. Reported by Agostino
   Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2604
 * libtiff/tif_strip.c: revert the change in TIFFNumberOfStrips()
   done for http://bugzilla.maptools.org/show_bug.cgi?id=2587 /
   CVE-2016-9273 since the above change is a better fix that makes
   it unnecessary.
 * libtiff/tif_dirread.c: modify ChopUpSingleUncompressedStrip()
   to instanciate compute ntrips as TIFFhowmany_32(td->td_imagelength,
   rowsperstrip), instead of a logic based on the total size of
   data. Which is faulty is the total size of data is not sufficient
   to fill the whole image, and thus results in reading outside of
   the StripByCounts/StripOffsets arrays when using TIFFReadScanline().
   Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2608.
 * libtiff/tif_ojpeg.c: make OJPEGDecode() early exit in case of
   failure in OJPEGPreDecode(). This will avoid a divide by zero,
   and potential other issues. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2611
 * libtiff/tif_write.c: fix misleading indentation as warned by GCC.
 * libtiff/tif_fax3.h: revert change done on 2016-01-09 that made
   Param member of TIFFFaxTabEnt structure a uint16 to reduce size
   of the binary. It happens that the Hylafax software uses the
   tables that follow this typedef (TIFFFaxMainTable, TIFFFaxWhiteTable,
   TIFFFaxBlackTable), although they are not in a public libtiff
   header. Raised by Lee Howard. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2636
 * libtiff/tiffio.h, libtiff/tif_getimage.c: add TIFFReadRGBAStripExt()
   and TIFFReadRGBATileExt() variants of the functions without ext,
   with an extra argument to control the stop_on_error behaviour.
 * libtiff/tif_getimage.c: fix potential memory leaks in error code
   path of TIFFRGBAImageBegin(). Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2627
 * libtiff/tif_jpeg.c: increase libjpeg max memory usable to 10 MB
   instead of libjpeg 1MB default. This helps when creating files
   with "big" tile, without using libjpeg temporary files. Related
   to https://trac.osgeo.org/gdal/ticket/6757
 * libtiff/tif_jpeg.c: avoid integer division by zero in
   JPEGSetupEncode() when horizontal or vertical sampling is set
   to 0. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2653
 * libtiff/tif_dirwrite.c: in TIFFWriteDirectoryTagCheckedRational,
   replace assertion by runtime check to error out if passed value
   is strictly negative. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2535
 * libtiff/tif_dirread.c: avoid division by floating point 0 in
   TIFFReadDirEntryCheckedRational() and
   TIFFReadDirEntryCheckedSrational(), and return 0 in that case
   (instead of infinity as before presumably) Apparently some
   sanitizers do not like those divisions by zero. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2644
 * libtiff/tif_dir.c, tif_dirread.c, tif_dirwrite.c: implement
   various clampings of double to other data types to avoid undefined
   behaviour if the output range isn't big enough to hold the input
   value. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2643
   http://bugzilla.maptools.org/show_bug.cgi?id=2642
   http://bugzilla.maptools.org/show_bug.cgi?id=2646
   http://bugzilla.maptools.org/show_bug.cgi?id=2647
 * libtiff/tif_jpeg.c: validate BitsPerSample in JPEGSetupEncode()
   to avoid undefined behaviour caused by invalid shift exponent.
   Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2648
 * libtiff/tif_read.c: avoid potential undefined behaviour on signed
   integer addition in TIFFReadRawStrip1() in isMapped() case.
   Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2650
 * libtiff/tif_getimage.c: add explicit uint32 cast in putagreytile
   to avoid UndefinedBehaviorSanitizer warning. Patch by Nicolás
   Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2658
 * libtiff/tif_read.c: TIFFReadBufferSetup(): use _TIFFcalloc() to
   zero initialize tif_rawdata. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2651
 * libtiff/tiffio.h, tif_unix.c, tif_win32.c, tif_vms.c: add _TIFFcalloc()
 * libtiff/tif_luv.c, tif_lzw.c, tif_packbits.c: return 0 in Encode
   functions instead of -1 when TIFFFlushData1() fails. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2130
 * libtiff/tif_ojpeg.c: fix leak in OJPEGReadHeaderInfoSecTablesQTable,
   OJPEGReadHeaderInfoSecTablesDcTable and
   OJPEGReadHeaderInfoSecTablesAcTable when read fails. Patch by
   Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2659
 * libtiff/tif_jpeg.c: only run JPEGFixupTagsSubsampling() if the
   YCbCrSubsampling tag is not explicitly present. This helps a
   bit to reduce the I/O amount when the tag is present (especially
   on cloud hosted files).
 * libtiff/tif_lzw.c: in LZWPostEncode(), increase, if necessary,
   the code bit-width after flushing the remaining code and before
   emitting the EOI code. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=1982
 * libtiff/tif_pixarlog.c: fix memory leak in error code path of
   PixarLogSetupDecode(). Patch by Nicolás Peña. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2665
 * libtiff/tif_fax3.c, tif_predict.c, tif_getimage.c: fix GCC 7
   -Wimplicit-fallthrough warnings.
 * libtiff/tif_dirread.c: fix memory leak in non DEFER_STRILE_LOAD
   mode (ie default) when there is both a StripOffsets and TileOffsets
   tag, or a StripByteCounts and TileByteCounts Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2689
 * libtiff/tif_ojpeg.c: fix potential memory leak in
   OJPEGReadHeaderInfoSecTablesQTable, OJPEGReadHeaderInfoSecTablesDcTable
   and OJPEGReadHeaderInfoSecTablesAcTable Patch by Nicolás Peña.
   Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2670
 * libtiff/tif_fax3.c: avoid crash in Fax3Close() on empty file.
   Patch by Alan Coopersmith + complement by myself. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2673
 * libtiff/tif_read.c: TIFFFillStrip(): add limitation to the number
   of bytes read in case td_stripbytecount[strip] is bigger than
   reasonable, so as to avoid excessive memory allocation.
 * libtiff/tif_zip.c, tif_pixarlog.c, tif_predict.c: fix memory
   leak when the underlying codec (ZIP, PixarLog) succeeds its
   setupdecode() method, but PredictorSetup fails. Credit to OSS-Fuzz
   (locally run, on GDAL)
 * libtiff/tif_read.c: TIFFFillStrip() and TIFFFillTile(): avoid
   excessive memory allocation in case of shorten files. Only
   effective on 64 bit builds and non-mapped cases. Credit to
   OSS-Fuzz (locally run, on GDAL)
 * libtiff/tif_read.c: TIFFFillStripPartial() / TIFFSeek(), avoid
   potential integer overflows with read_ahead in CHUNKY_STRIP_READ_SUPPORT
   mode. Should especially occur on 32 bit platforms.
 * libtiff/tif_read.c: TIFFFillStripPartial(): avoid excessive
   memory allocation in case of shorten files. Only effective on
   64 bit builds. Credit to OSS-Fuzz (locally run, on GDAL)
 * libtiff/tif_read.c: update tif_rawcc in CHUNKY_STRIP_READ_SUPPORT
   mode with tif_rawdataloaded when calling TIFFStartStrip() or
   TIFFFillStripPartial(). This avoids reading beyond tif_rawdata
   when bytecount > tif_rawdatasize. Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1545.
   Credit to OSS-Fuzz
 * libtiff/tif_color.c: avoid potential int32 overflow in
   TIFFYCbCrToRGBInit() Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1533 Credit
   to OSS-Fuzz
 * libtiff/tif_pixarlog.c, tif_luv.c: avoid potential int32 overflows
   in multiply_ms() and add_ms(). Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1558 Credit
   to OSS-Fuzz
 * libtiff/tif_packbits.c: fix out-of-buffer read in PackBitsDecode()
   Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1563
   Credit to OSS-Fuzz
 * libtiff/tif_luv.c: LogL16InitState(): avoid excessive memory
   allocation when RowsPerStrip tag is missing. Credit to OSS-Fuzz
   (locally run, on GDAL)
 * libtiff/tif_lzw.c: update dec_bitsleft at beginning of LZWDecode(),
   and update tif_rawcc at end of LZWDecode(). This is needed to
   properly work with the latest chnges in tif_read.c in
   CHUNKY_STRIP_READ_SUPPORT mode.
 * libtiff/tif_pixarlog.c: PixarLogDecode(): resync tif_rawcp with
   next_in and tif_rawcc with avail_in at beginning and end of
   function, similarly to what is done in LZWDecode(). Likely needed
   so that it works properly with latest chnges in tif_read.c in
   CHUNKY_STRIP_READ_SUPPORT mode. But untested...
 * libtiff/tif_getimage.c: initYCbCrConversion(): add basic validation
   of luma and refBlackWhite coefficients (just check they are not
   NaN for now), to avoid potential float to int overflows. Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1663 Credit
   to OSS Fuzz
 * libtiff/tif_read.c: _TIFFVSetField(): fix outside range cast of
   double to float. Credit to Google Autofuzz project
 * libtiff/tif_getimage.c: initYCbCrConversion(): check luma[1] is
   not zero to avoid division by zero. Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1665 Credit
   to OSS Fuzz
 * libtiff/tif_read.c: _TIFFVSetField(): fix outside range cast of
   double to float. Credit to Google Autofuzz project
 * libtiff/tif_getimage.c: initYCbCrConversion(): check luma[1] is
   not zero to avoid division by zero. Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1665 Credit
   to OSS Fuzz
 * libtiff/tif_getimage.c: initYCbCrConversion(): stricter validation
   for refBlackWhite coefficients values. To avoid invalid float->int32
   conversion. Fixes
   https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1718 Credit
   to OSS Fuzz

CHANGES IN THE TOOLS:
 * tools/fax2tiff.c (main): Applied patch by Jörg Ahrens to fix
   passing client data for Win32 builds using tif_win32.c
   (USE_WIN32_FILEIO defined) for file I/O. Patch was provided via
   email on November 20, 2016.
 * tools/tiffcp.c: avoid uint32 underflow in cpDecodedStrips that
   can cause various issues, such as buffer overflows in the library.
   Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2598
 * tools/tiffcrop.c: fix readContigStripsIntoBuffer() in -i (ignore)
   mode so that the output buffer is correctly incremented to avoid
   write outside bounds. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2620
 * tools/tiffcrop.c: add 3 extra bytes at end of strip buffer in
   readSeparateStripsIntoBuffer() to avoid read outside of heap
   allocated buffer. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2621
 * tools/tiffcrop.c: fix integer division by zero when BitsPerSample
   is missing. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2619
 * tools/tiffinfo.c: fix null pointer dereference in -r mode when
   the image has no StripByteCount tag. Reported by Agostino Sarubbo.
   Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2594
 * tools/tiffcp.c: avoid potential division by zero is BitsPerSamples
   tag is missing. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2597
 * tools/tif_dir.c: when TIFFGetField(, TIFFTAG_NUMBEROFINKS, ) is
   called, limit the return number of inks to SamplesPerPixel, so
   that code that parses ink names doesn't go past the end of the
   buffer. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2599
 * tools/tiffcp.c: avoid potential division by zero is BitsPerSamples
   tag is missing. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2607
 * tools/tiffcp.c: fix uint32 underflow/overflow that can cause
   heap-based buffer overflow. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2610
 * tools/tiffcp.c: replace assert( (bps % 8) == 0 ) by a non assert
   check. Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2605
 * tools/tiff2ps.c: fix 2 heap-based buffer overflows (in PSDataBW
   and PSDataColorContig). Reported by Agostino Sarubbo. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2633 and
   http://bugzilla.maptools.org/show_bug.cgi?id=2634.
 * tools/tiff2pdf.c: prevent heap-based buffer overflow in -j mode
   on a paletted image. Note: this fix errors out before the overflow
   happens. There could probably be a better fix. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2635
 * tools/tiff2pdf.c: fix wrong usage of memcpy() that can trigger
   unspecified behaviour. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2638
 * tools/tiff2pdf.c: avoid potential invalid memory read in
   t2p_writeproc. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2639
 * tools/tiff2pdf.c: avoid potential heap-based overflow in
   t2p_readwrite_pdf_image_tile(). Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2640
 * tools/tiffcrop.c: remove extraneous TIFFClose() in error code
   path, that caused double free. Related to
   http://bugzilla.maptools.org/show_bug.cgi?id=2535
 * tools/tiffcp.c: error out cleanly in cpContig2SeparateByRow and
   cpSeparate2ContigByRow if BitsPerSample != 8 to avoid heap based
   overflow. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2656
   and http://bugzilla.maptools.org/show_bug.cgi?id=2657
 * tools/raw2tiff.c: avoid integer division by zero. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2631
 * tools/tiff2ps.c: call TIFFClose() in error code paths.
 * tools/fax2tiff.c: emit appropriate message if the input file is
   empty. Patch by Alan Coopersmith. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2672
 * tools/tiff2bw.c: close TIFF handle in error code path. Fixes
   http://bugzilla.maptools.org/show_bug.cgi?id=2677

Files:
RevisionActionfile
1.136modifypkgsrc/graphics/tiff/Makefile
1.24modifypkgsrc/graphics/tiff/PLIST
1.82modifypkgsrc/graphics/tiff/distinfo
1.1removepkgsrc/graphics/tiff/patches/patch-html_man_Makefile.in
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif__luv.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif__pixarlog.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif__strip.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_dir.c
1.3removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_dirread.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_dirwrite.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_getimage.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_jpeg.c
1.2removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_ojpeg.c
1.2removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_read.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_unix.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tif_win32.c
1.1removepkgsrc/graphics/tiff/patches/patch-libtiff_tiffio.h
1.3removepkgsrc/graphics/tiff/patches/patch-libtiff_tiffiop.h
1.1removepkgsrc/graphics/tiff/patches/patch-man_Makefile.in
1.3removepkgsrc/graphics/tiff/patches/patch-tools_tiff2pdf.c
1.3removepkgsrc/graphics/tiff/patches/patch-tools_tiffcp.c
1.2removepkgsrc/graphics/tiff/patches/patch-tools_tiffcrop.c