2015-08-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* configure.ac: libtiff 4.0.5 released.

2015-08-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* CMakeLists.txt: Applied patch by Roger Leigh (via tiff mailing
	list on 2015-08-29) to add ld-version-script option to cmake build
	to match autoconf.  Note: defaults to 'on' to be ABI-compatible by
	default with common Linux distribution builds.  Note that the
	autoconf configure script defaults to 'off'.

	* html/build.html: Applied patch by Roger Leigh (via tiff mailing
	list on 2015-08-29) to describe how to use CMake to build libtiff.

2015-08-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* html/v4.0.5.html: Added HTML file describing the changes which
	will appear in the 4.0.5 release.

2015-08-23  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tiffiop.h: For MinGW comiles, make sure that build
	supports necessary __MSVCRT_VERSION__ (at least at least 0x800).
	Otherwise large files can not be supported for POSIX-style I/O.

	* tools/fax2tiff.c (main): Eliminate a compiler warning in 64-bit
	builds about cast to thandle_t.

	* test/rewrite_tag.c (main): Does not require any arguments.

2015-08-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/CMakeLists.txt, port/snprintf.c: Patch by Roger Leigh to
	fix build issues when using Cmake due to Windows large file
	changes.

2015-08-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tiffiop.h: First cut at supporting large files under
	Microsoft Windows using tif_unix.c and the libtiff tools.  This
	only works if the Windows CDK is new enough to support the APIs
	used (Visual C++ 2005 or later).  Support for large files is not
	actually tested yet.

2015-08-15  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_jpeg.c: Applied patch by Räisä Olli to assure that
	client_data is initialized to a known value, and to report an
	error on two memory allocation failures.

2015-08-13  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* CMakeLists.txt: Applied patch by Roger Leigh to fix libtiffxx
	symbol versioning.  Patch was mailed to libtiff list on Thu, 13
	Aug 2015.

2015-07-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* cmake: Add d suffix to debug libraries with MSVC.  Patch #3 of 3
	by Roger Leigh posted to tiff list on Wed, 1 Jul 2015 15:58:20
	+0100.

	* cmake: Add extra warning flags.  Patch #2 of 3 by Roger Leigh
	posted to tiff list on Wed, 1 Jul 2015 15:58:20 +0100.

	* cmake: Correct snprintf fallback for VS2015.  Patch #1 of 3 by
	Roger Leigh posted to tiff list on Wed, 1 Jul 2015 15:58:20 +0100.

2015-06-24  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* CMakeLists.txt: Add CMake patchset by Roger Leigh as posted to
	libtiff mailing list on Mon, 22 Jun 2015 21:21:01 +0100. Several
	corrections to ensure that the autotools build still works were
	added by me.  I have not yet tested the build using 'cmake' or
	MSVC with 'nmake'.

2015-06-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* test/Makefile.am: tiff2rgba-quad-tile.jpg.sh depends on the JPEG
	library so only execute if JPEG is available.

	* libtiff 4.0.4 released.

	* configure.ac: Add a HAVE_FOO Automake conditional for each
	add-on library.

	* test/Makefile.am (JPEG_DEPENDENT_CHECK_PROG): raw_decode
	requires JPEG support to compile.  Use Automake conditional to
	only include it when JPEG support is available.

	* html/build.html: Try to improve the nmake-based VC++ build
	description.

	* libtiff/tiffconf.vc.h: Build fixes based on testing.

	* libtiff/tif_config.vc.h: Build fixes based on testing.

	* libtiff/libtiff.def: TIFFRasterScanline does not exist so remove
	export for it.

2015-06-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_config.vc.h: Make adjustments to match the new
	definitions that configure produces, including for WIN64.  Still
	needs to be tested.

	* configure.ac: For 64-bit MinGW, fix SSIZE_FORMAT formatting
	specifier.  64-bit MinGW supports 'long long' but support for
	'lld' is not assured by the run-time DLLs and so GCC warns.
	Add TIFF_SIZE_T and TIFF_SIZE_FORMAT to provide a type definition
	and printf format specifier to deal with printing values of
	'size_t' type.  In particular, this was necessary for WIN64.
	Added a configure test for if the system headers provide 'optarg'
	(normal case) and block out the many explicit 'extern' statements
	in the utilities.  This was found to be necessary under Windows
	when getopt is in a DLL and the symbols are already imported with
	dllimport via standard header files.

	* test/raw_decode.c (XMD_H): Avoid conflicting typedefs for INT32
	and boolean in MinGW build due to including jpeglib.h.

	* test/rewrite_tag.c (main): Fix problem with location of variable
	declaration.

	* libtiff/libtiff.def: Added exports for TIFFGetConfiguredCODECs,
	TIFFReadRGBAImageOriented, TIFFSetCompressionScheme,
	TIFFSwabArrayOfTriples, TIFFVGetFieldDefaulted, _TIFFCheckRealloc,
	TIFFRasterScanline, TIFFSetErrorHandlerExt,
	TIFFSetWarningHandlerExt, TIFFNumberOfDirectories,
	TIFFCreateCustomDirectory, TIFFCreateEXIFDirectory,
	TIFFWriteCustomDirectory, _TIFFRewriteField as recommended by
	Roger Leigh and justified by use in libtiff tests, documentation,
	and changelog notes.  Also sorted symbol list and removed
	duplicate entries.

2015-06-16  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_getimage.c: Fix four Coverity issues related to
	unintended sign extension.

2015-06-16  Even Rouault <even.rouault at spatialys.com>

	* libtiff/tif_unix.c: fix compilation with MSVC (fix by Jeff McKenna)

2015-06-14  Lee Howard  <faxguy@howardsilvan.com>

	* libtiff/tif_unix.c: contribution from Vadim Zeitlin on
	Bugzilla Bug #2510 fixes several harmless but still annoying
	warnings

	* configure: contribution from Ludolf Holzheid on Bugzilla
	Bug #2498.  Adds an option to select the file I/O style on
	Windows hosts.

	* libtiff/tif_getimage.c: contribution from Gary Cramblitt
	on Bugzilla Bug #2409.  Correct reading of certain tiled TIFFs.

	* configure, configure.ac: contribution from Marcos H. Woehrmann
	on Bugzilla Bug #2405.  Correct shell equality operator.

	* tools/tiffgt.c (raster_draw): contribution from Jay Berkenbilt
	on Bugzilla Bug #2401.  Appropriately call glFlush().

	* tools/tiff2pdf.c: change ColorTransform from "0" to "1"
	following Bugzilla Bug #2150.

2015-06-13  Lee Howard  <faxguy@howardsilvan.com>

	* libtiff/tif_lzw.c: contribution from Andy Cave - decode
	files that contain consecutive CODE_CLEAR codes.

	* tools/tiff2pdf.c: contribution from Antti S. Lankila on
	Bugzilla Bug #2078. Suppress initial output of the header.

	* tools/tiff2pdf.c: contribution from Yuriy M. Kaminskiy -
	Take care in using the return value from snprintf().

	* tools/tiffcrop.c: contribution from Eduardo Robles Elvira -
	correctly copy the compression tag from the source TIFF.

	* tools/tiff2ps.c: contribution from Eduardo Robles Elvira -
	correct sizing and scaling problems with output document.

2015-06-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_jpeg.c (JPEGDecode): Split JPEGDecode() into two
	clean implementations in order to avoid pre-processor hell.  Only
	one of the implementations is used in a given build.

2015-06-08  Even Rouault <even.rouault at spatialys.com>

	* libtiff/tif_jpeg.c: Fix compilation in BITS_IN_JSAMPLE == 12
	case

2015-06-07  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_write.c (TIFFWriteEncodedStrip): Fix Coverity 715975
	"Division or modulo by zero".
	(TIFFWriteEncodedTile): Fix Coverity 715976 and 715977 "Division
	or modulo by zero".
	(TIFFWriteRawStrip): Fix Coverity 715978 "Division or modulo by
	zero".
	(TIFFWriteScanline): Fix Coverity 715979 "Division or modulo by
	zero".

	* libtiff/tif_read.c (TIFFStartTile): Fix Coverity 715973 and
	715974 "Division or modulo by zero".

2015-05-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_dir.c (TIFFNumberOfDirectories): Quiet Coverity
	1134470 "Logically dead code" by making the roll-over check
	explicit.

	* libtiff/tif_luv.c (LogLuvDecodeTile): Fix Coverity 991227
	"Division or modulo by zero".
	(LogLuvDecodeStrip): Fix Coverity 991239 "Division or modulo by
	zero".
	(LogLuvEncodeStrip): Fix Coverity 991240 "Division or modulo by
	zero".
	(LogLuvEncodeTile): Fix Coverity 991241 "Division or modulo by
	zero".

	* libtiff/tif_dirread.c (TIFFReadDirEntryDoubleArray): Fix
	Coverity 298626 "Logically dead code".
	(TIFFReadDirEntryFloatArray): Fix Coverity 298627 "Logically dead
	code".
	(TIFFReadDirEntryIfd8Array): Fix Coverity 298628 "Logically dead
	code".
	(TIFFReadDirEntrySlong8Array): Fix Coverity 298629 "Logically dead
	code"

	* libtiff/tif_dir.c (TIFFNumberOfDirectories): Don't depend on ++
	operator precedenc in evaluation.  Might quench Coverity 1134470
	"Logically dead code".

	* libtiff/tif_jpeg.c (JPEGDecode): Fix Coverity 602597 "Operands
	don't affect result".  This change uses ifdefs to include
	applicable code based on properties of libjpeg.  Still needs to be
	re-tested with 12-bit "6b" and "MK1".

2015-05-30  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_dirwrite.c (_TIFFRewriteField): Fix Coverity 1024310
	"Resource leak".

	* libtiff/tif_ojpeg.c (OJPEGReadHeaderInfoSecStreamDht): Fix
	Coverity 601720 "Resource leak".

	* libtiff/tif_jpeg.c (JPEGCleanup): Fix Coverity 298624
	"Dereference before null check".

	* libtiff/tif_ojpeg.c (OJPEGReadBufferFill): Fix Coverity 603400
	"Missing break in switch".

	* contrib/addtiffo/tif_overview.c (TIFF_DownSample): Check buffer
	size calculation for overflow.

	* contrib/addtiffo/addtiffo.c (main): Possibly address Coverity
	1024226 "Untrusted value as argument".

	* tools/gif2tiff.c (readgifimage): Fix Coverity 1024222 "Untrusted
	value as argument".
	(checksignature): Fix Coverity 1024894 "Ignoring number of bytes
	read".
	(readextension): Fix Coverity 1024893 "Ignoring number of bytes
	read".
	(readgifimage): Fix Coverity 1024890 "Ignoring number of bytes
	read".
	(readraster): Fix Coverity 1024891 "Ignoring number of bytes
	read".
	(readgifimage): Fix Coverity 1024892 "Ignoring number of bytes
	read".

	* tools/tiff2pdf.c (t2p_readwrite_pdf_image): Fix Coverity 1024181
	"Structurally dead code".

	* tools/raw2tiff.c (main): Fix Coverity 1024887 "Unchecked return
	value from library".
	(guessSize): Fix Coverity 1024888 "Unchecked return value from
	library".
	(guessSize): Fix Coverity 1214162 "Ignoring number of bytes read".
	(guessSize): Fix Coverity 1024889 "Unchecked return value from
	library".

	* tools/tiff2pdf.c (t2p_readwrite_pdf_image): Fix Coverity 298621
	"Resource leak".
	(t2p_readwrite_pdf_image): Fix Coverity 1024181 "Structurally dead
	code".
	(t2p_write_pdf): Fix Coverity 1227690 "Unused value".

2015-05-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* contrib/iptcutil/iptcutil.c (formatIPTC): Fix Coverity 1024468
	"Infinite loop".
	(formatIPTC): Fix Coverity 1024727 "Truncated stdio return value".
	(formatIPTC): Fix Coverity 1214240 "Untrusted loop bound".

2015-05-28  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* contrib/addtiffo/tif_ovrcache.c (TIFFCreateOvrCache): Fix
	Coverity 298615 "Resource leak".
	(TIFFGetOvrBlock): Fix Coverity 1024649 "Unintended sign
	extension".

	* tools/bmp2tiff.c (main): Fix Coverity 1024225 "Untrusted value
	as argument".
	(main): Fix Coverity 1024678 "Unchecked return value from
	library".
	(main): Fix Coverity 1024679 "Unchecked return value from
	library".
	(main): Fix Coverity 1214160 "Ignoring number of bytes read".

	* contrib/addtiffo/tif_ovrcache.c (TIFFCreateOvrCache): Fix
	Coverity 298615 "Resource leak".

	* tools/tiffcp.c: Fix Coverity 1024306, 1024307, 1024308, 1024309
	"Resource leak".

	* tools/tiffsplit.c (cpTiles): Fix Coverity 1024304 "Resource
	leak".
	(cpStrips): Fix Coverity 1024305 "Resource leak".

2015-05-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/ras2tiff.c: Fix Sun Raster header definition to be safe
	for 64-bit systems.  Add some header validations.  Should fix many
	Coverity issues.
	(main): Fix Coverity 1301206: "Integer handling issues  (BAD_SHIFT)".
	(main): Quiet Coverity 1024223 "Untrusted value as argument".

	* tools/tiffmedian.c (GetInputLine): Fix Coverity 1024795 "Nesting
	level does not match indentation".
	(get_histogram): Quiet Coverity 1024386 "Out-of-bounds read".
	This was a benign mis-diagnosis but added code to enforce against
	buffer overflow.

	* tools/tiffcrop.c (ROTATE_ANY): Fix Coverity 1294542 "Logical
	vs. bitwise operator".
	(readContigStripsIntoBuffer): Fix Coverity 1024545 "Division or
	modulo by zero".
	(readContigTilesIntoBuffer): Fix Coverity 1024586 "Logically dead
	code".
	(writeSingleSection): Fix Coverity 1024796 "Nesting level does not
	match indentation".
	(writeCroppedImage): Fix Coverity 1024797 "Nesting level does not
	match indentation".
	(loadImage): Fix Coverity 1299741 "Dereference before null check".
	(loadImage): Fix Coverity 1299740 "Out-of-bounds write".

2015-03-02  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiffdither.c: check memory allocations to avoid writing to
	NULL pointer. Also check multiplication overflow. Fixes #2501,
	CVE-2014-8128. Derived from patch by Petr Gajdos.

2015-01-26  Even Rouault  <even.rouault@spatialys.com>

	* add html/v4.0.4beta.html under version control
	* HOWTO-RELEASE: write that cvs add html/vX.X.html must be used

2015-01-26  Even Rouault  <even.rouault@spatialys.com>

	* libtiff 4.0.4beta released

2015-01-26  Even Rouault  <even.rouault@spatialys.com>

	* automake: updated to 1.15
	* libtool: updated to 2.4.5

2015-01-22  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiff2pdf.c: Fix two crashes (oCERT-2014-013)

2015-01-05  Frank Warmerdam  <warmerdam@pobox.com>

	* html/bugs.html: remove note about needing to email the tiff mailing
	list administrator about being approved for membership, this appears
	not to be true.

2015-01-05  Olivier Paquet  <olivier.paquet@gmail.com>

	* tools/tiff2pdf.c: Fixed unsigned integer addition overflow detection.

2015-01-03  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_dirread.c: in TIFFCheckDirOffset(), avoid uint16 overflow
	when reading more than 65535 directories, and effectively error out when
	reaching that limit.

2014-12-29  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_jpeg.c: in JPEGFixupTags(), recognize SOF2, SOF9 and SOF10
	markers to avoid emitting a warning (even if, according to the TechNote,
	there are admitedly unusual/not recommended or even forbidden variants, but
	they do work well with libjpeg for SOF2, and with libjpeg-turbo for SOF2,
	SOF9 and SOF10).
	Define in_color_space and input_components to the right values in
	JPEGSetupEncode(), before calling jpeg_set_defaults(), as specified by
	libjpeg API documentation, so as to be compatible with mozjpeg library.
	Note: the default settings of mozjpeg will produce progressive scans, which
	is forbidden by the TechNote.

2014-12-29  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_getimage.c: move test on vertical value of YCbCr subsampling.
	to avoid buffer leak (fix previous fix, found by Coverity scan)

2014-12-29  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_next.c: add new tests to check that we don't read outside of
	the compressed input stream buffer.

	* libtiff/tif_getimage.c: in OJPEG case, fix checks on strile width/height
    in the putcontig8bitYCbCr42tile, putcontig8bitYCbCr41tile and
    putcontig8bitYCbCr21tile cases.

2014-12-27  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_dir.c: in TIFFDefaultDirectory(), reset any already existing
	extented tags installed by user code through the extender mechaninm before
	calling the extender callback (GDAL #5054)

2014-12-26  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiffcrop.c: Fix warnings about variables set but not used.

	* contrib/iptcutil/iptcutil.c: Fix warnings about variables set
	but not used.

	* tools/tiffgt.c: Fix warnings about unused parameters.

	* libtiff/tif_stream.cxx: Fix warnings about unused parameters.

2014-12-25  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_getimage.c, libtiff/tif_ojpeg.c, libtiff/tif_zip.c: fix
	various typos found by Debian lintian tool (GDAL #5756)

2014-12-24  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_getimage.c: avoid divide by zero on invalid YCbCr subsampling.
	http://bugzilla.maptools.org/show_bug.cgi?id=2235

2014-12-24  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiff2pdf.c: fix buffer overflow on some YCbCr JPEG compressed images.
	http://bugzilla.maptools.org/show_bug.cgi?id=2445

2014-12-24  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiff2pdf.c: fix buffer overflow on YCbCr JPEG compressed image.
	Derived from patch by Petr Gajdos,
	http://bugzilla.maptools.org/show_bug.cgi?id=2443

2014-12-23  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_dirread.c: In EstimateStripByteCounts(), check return code
	of _TIFFFillStriles(). This solves crashing bug on corrupted
	images generated by afl.

2014-12-23  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_read.c: fix several invalid comparisons of a uint64 value with
	<= 0 by casting it to int64 first. This solves crashing bug on corrupted
	images generated by afl.

2014-12-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiffdump.c: Guard against arithmetic overflow when
	calculating allocation buffer sizes.

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiff2bw.c: when Photometric=RGB, the utility only works if
	SamplesPerPixel = 3. Enforce that
	http://bugzilla.maptools.org/show_bug.cgi?id=2485 (CVE-2014-8127)

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* tools/pal2rgb.c, tools/thumbnail.c: fix crash by disabling TIFFTAG_INKNAMES
	copying. The right fix would be to properly copy it, but not worth the burden
	for those esoteric utilities.
	http://bugzilla.maptools.org/show_bug.cgi?id=2484 (CVE-2014-8127)

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* tools/thumbnail.c: fix out-of-buffer write
	http://bugzilla.maptools.org/show_bug.cgi?id=2489 (CVE-2014-8128)

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* tools/thumbnail.c, tools/tiffcmp.c: only read/write TIFFTAG_GROUP3OPTIONS
	or TIFFTAG_GROUP4OPTIONS if compression is COMPRESSION_CCITTFAX3 or
	COMPRESSION_CCITTFAX4
	http://bugzilla.maptools.org/show_bug.cgi?id=2493 (CVE-2014-8128)

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_next.c: check that BitsPerSample = 2. Fixes
	http://bugzilla.maptools.org/show_bug.cgi?id=2487 (CVE-2014-8129)

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiff2pdf.c: check return code of TIFFGetField() when reading
	TIFFTAG_SAMPLESPERPIXEL

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	* tools/tiffcp.c: fix crash when converting YCbCr JPEG-compressed to none.
	Based on patch by Tomasz Buchert (http://bugzilla.maptools.org/show_bug.cgi?id=2480)
	Description: fix for Debian bug #741451
	tiffcp crashes when converting JPEG-encoded TIFF to a different
	encoding (like none or lzw). For example this will probably fail:
	tiffcp -c none jpeg_encoded_file.tif output.tif
	The reason is that when the input file contains JPEG data,
	the tiffcp code forces conversion to RGB space. However,
	the output normally inherits YCbCr subsampling parameters
	from the input, which leads to a smaller working buffer
	than necessary. The buffer is subsequently overrun inside
	cpStripToTile() (called from writeBufferToContigTiles).
	Note that the resulting TIFF file would be scrambled even
	if tiffcp wouldn't crash, since the output file would contain
	RGB data intepreted as subsampled YCbCr values.
	This patch fixes the problem by forcing RGB space on the output
	TIF if the input is JPEG-encoded and output is *not* JPEG-encoded.
	Author: Tomasz Buchert <tomasz.buchert@inria.fr>

2014-12-21  Even Rouault  <even.rouault@spatialys.com>

	Fix various crasher bugs on fuzzed images.
	* libtiff/tif_dir.c: TIFFSetField(): refuse to set negative values for
	TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION that cause asserts when writing
	the directory
	* libtiff/tif_dirread.c: TIFFReadDirectory(): refuse to read ColorMap or
	TransferFunction if BitsPerSample has not yet been read, otherwise reading
	it later will cause user code to crash if BitsPerSample > 1
	* libtiff/tif_getimage.c: TIFFRGBAImageOK(): return FALSE if LOGLUV with
	SamplesPerPixel != 3, or if CIELAB with SamplesPerPixel != 3 or BitsPerSample != 8
	* libtiff/tif_next.c: in the "run mode", use tilewidth for tiled images
	instead of imagewidth to avoid crash
	* tools/bmp2tiff.c: fix crash due to int overflow related to input BMP dimensions
	* tools/tiff2pdf.c: fix crash due to invalid tile count (should likely be checked by
	libtiff too). Detect invalid settings of BitsPerSample/SamplesPerPixel for CIELAB / ITULAB
	* tools/tiffcrop.c: fix crash due to invalid TileWidth/TileHeight
	* tools/tiffdump.c: fix crash due to overflow of entry count.

2014-12-15  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_jpeg.c: Fix regression introduced on 2010-05-07 that caused
	all tiles/strips to include quantization tables even when the jpegtablesmode
	had the JPEGTABLESMODE_QUANT bit set.
	Also add explicit removal of Huffman tables when jpegtablesmode has the
	JPEGTABLESMODE_HUFF bit set, which avoids Huffman tables to be emitted in the
	first tile/strip (only useful in update scenarios. create-only was
	fine)

2014-12-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiff2pdf.c: Assure that memory size calculations for
	_TIFFmalloc() do not overflow the range of tmsize_t.

2014-12-07  Even Rouault  <even.rouault@spatialys.com>

	* tools/thumbnail.c, tools/tiffcrop.c: "fix" heap read over-run found with
	Valgrind and Address Sanitizer on test suite

2014-12-07  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiff2pdf.c (t2p_read_tiff_init): TIFFTAG_TRANSFERFUNCTION
	tag can return one channel, with the other two channels set to
	NULL.  The tiff2pdf code was expecting that other two channels
	were duplicate pointers in the case where there is only one
	channel.  Detect this condition in order to avoid a crash, and
	presumably perform correctly with just one channel.

2014-12-06  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiffdump.c: Fix double-free bug.

2014-11-27  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_config.vc.h: no longer use "#define snprintf _snprintf" with
	Visual Studio 2015 aka VC 14 aka MSVC 1900

2014-11-20  Even Rouault  <even.rouault@spatialys.com>

	* libtiff/tif_lzw.c: prevent potential null dereference of
	sp->dec_codetab in LZWPreDecode (bug #2459)

	* libtiff/tif_read.c: in TIFFReadBufferSetup(), avoid passing -1 size
	to TIFFmalloc() if passed user buffer size is 0 (bug #2459)

	* libtiff/tif_ojpeg.c: make Coverity happier (not a bug, #2459)

	* libtiff/tif_dir.c: in _TIFFVGetField() and _TIFFVSetField(), make
	Coverity happier (not a bug, #2459)

	* libtiff/tif_dirread.c: in TIFFFetchNormalTag(), make Coverity happier
	(not a bug, #2459)

	* tools/tiff2pdf.c: close PDF file (bug #2479)

	* tools/fax2ps.c: check malloc()/realloc() result (bug #2470)

	* tools/tiffdump.c: detect cycle in TIFF directory chaining (bug #2463)
	and avoid passing a NULL pointer to read() if seek() failed before (bug #2459)

	* tools/tiffcrop.c: fix segfault if bad value passed to -Z option
	(bug #2459) and add missing va_end in dump_info (#2459)

	* tools/gif2tif.c: apply patch for CVE-2013-4243 (#2451)

2014-11-20  Even Rouault  <even.rouault@spatialys.com>
	* libtiff/tif_jpeg.c: fix segfault in JPEGFixupTagsSubsampling() on
	corrupted image where tif->tif_dir.td_stripoffset == NULL (bug #2471)

2014-11-20  Even Rouault  <even.rouault@spatialys.com>
	* automake: updated to 1.14.1
	* libtool: updated to 2.4.3
	* HOWTO-RELEASE: small update about autotools building order

2014-10-20  Olivier Paquet  <olivier.paquet@gmail.com>
	* tools/tiff2pdf.c: Preserve input file directory order when pages
	are tagged with the same page number.

2014-08-31  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_dirread.c (TIFFReadDirEntryOutputErr): Incorrect
	count for tag should be a warning rather than an error since
	errors terminate processing.

2014-06-07  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiff2rgba.c (]): Fixed tiff2rgba usage message in that zip
	was wrongly described.  Fix suggested by Miguel Medalha.

2014-05-06  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_dirinfo.c (TIFFField) : Fix data type for
	TIFFTAG_GLOBALPARAMETERSIFD tag.  Patch by Steve Underwood.
	Reviewed and forwarded by Lee Howard.

2013-11-30  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dir.c: fix last fix for TIFFNumberOfDirectories()

2013-10-21  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dir.c: generate error in case of directory count
	overflow.

2013-10-01  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tiff.h, libtiff/tif_dirinfo.c: add definitions for
	TIFF/EP CFARepeatPatternDim and CFAPattern tags (bug #2457)

2013-09-12  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_dir.c (TIFFAdvanceDirectory): If nextdir is found to
	be defective, then set it to zero before returning error in order
	to terminate processing of truncated TIFF.  Issue found and fix
	suggested by Richard Nolde.

2013-08-14  Frank Warmerdam  <warmerdam@pobox.com>

	* tools/gif2tiff.c: fix possible OOB write (#2452, CVE-2013-4244)

2013-08-13  Frank Warmerdam  <warmerdam@pobox.com>

	* tools/gif2tiff.c: Be more careful about corrupt or
	hostile input files (#2450, CVE-2013-4231)

	* tools/tiff2pdf.c: terminate after failure of allocating
	ycbcr buffer (bug #2449, CVE-2013-4232)

2013-07-09  Frank Warmerdam  <warmerdam@google.com>

	* tools/tiffinfo.c: Default various values fetched with
	TIFFGetField() to avoid being uninitialized.

2013-05-02  Tom Lane  <tgl@sss.pgh.pa.us>

	* tools/tiff2pdf.c: Rewrite JPEG marker parsing in
	t2p_process_jpeg_strip to be at least marginally competent.  The
	approach is still fundamentally flawed, but at least now it won't
	stomp all over memory when given bogus input.  Fixes CVE-2013-1960.

2013-05-02  Tom Lane  <tgl@sss.pgh.pa.us>

	* contrib/dbs/xtiff/xtiff.c, libtiff/tif_codec.c,
 	libtiff/tif_dirinfo.c, tools/rgb2ycbcr.c, tools/tiff2bw.c,
 	tools/tiff2pdf.c, tools/tiff2ps.c, tools/tiffcrop.c,
 	tools/tiffdither.c: Enlarge some fixed-size buffers that weren't
 	large enough, and eliminate substantially all uses of sprintf(buf,
 	...)  in favor of using snprintf(buf, sizeof(buf), ...), so as to
 	protect against overflow of fixed-size buffers.  This responds in
 	particular to CVE-2013-1961 concerning overflow in tiff2pdf.c's
 	t2p_write_pdf_page(), but in general it seems like a good idea to
 	deprecate use of sprintf().

2013-03-29  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* configure.ac: Applied patch by Brad Smith to improve pkg-config
	static linking by adding -lm to Libs.private when needed.

2013-03-05  Tom Lane  <tgl@sss.pgh.pa.us>

	* html/man/tiff2ps.1.html, html/man/tiffcp.1.html,
 	html/man/tiffdither.1.html, man/tiff2ps.1, man/tiffcp.1,
 	man/tiffdither.1, tools/tiff2ps.c, tools/tiffcp.c,
 	tools/tiffdither.c: Sync tool usage printouts and man pages with
 	reality (quite a few options had escaped being documented in one
 	or both places).  Per an old report from Miroslav Vadkerti.

2013-01-25  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiff2ps.c:Fix bug in auto rotate option code. Once a
	rotation angle was set by the auto rotate check, it was retained
	for all pages that followed instead ofa being retested for each
	page.  Patch by Richard Nolde.

2013-01-18  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_write.c: tmsize_t related casting warning fixed for
	64bit linux.

	* libtiff/tif_read.c: uint64/tmsize_t change for MSVC warnings.
	http://bugzilla.maptools.org/show_bug.cgi?id=2427

2012-12-20  Tom Lane  <tgl@sss.pgh.pa.us>

	* test/raw_decode.c: Relax raw_decode's pixel-value checks so that
	it will pass with more versions of libjpeg.  (There are at least
	three in active use now, and JPEG_LIB_VERSION doesn't tell us
	enough to uniquely identify expected results.)

2012-12-12  Tom Lane  <tgl@sss.pgh.pa.us>

	* libtiff/tif_print.c: Fix TIFFPrintDirectory's handling of
	field_passcount fields: it had the TIFF_VARIABLE and
	TIFF_VARIABLE2 cases backwards.

2012-12-10  Tom Lane  <tgl@sss.pgh.pa.us>

	* tools/ppm2tiff.c: Improve previous patch for CVE-2012-4564:
 	check the linebytes calculation too, get the max() calculation
 	straight, avoid redundant error messages, check for malloc
 	failure.

2012-12-10  Tom Lane  <tgl@sss.pgh.pa.us>

	* libtiff/tif_pixarlog.c: Improve previous patch for CVE-2012-4447
 	(to enlarge tbuf for possible partial stride at end) so that
 	overflow in the integer addition is detected.  Per gripe from
 	Huzaifa Sidhpurwala.

2012-12-03  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiffset.c: tiffset now supports a -u option to unset a
	tag.  Patch by Zach Baker. See
	http://bugzilla.maptools.org/show_bug.cgi?id=2419

2012-11-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* automake: Update Automake to 1.12.5 release.

	* libtiff/tif_{unix,vms,win32}.c (_TIFFmalloc): ANSI C does not
	require malloc() to return NULL pointer if requested allocation
	size is zero.  Assure that _TIFFmalloc does.

2012-11-01  Frank Warmerdam  <warmerdam@pobox.com>

	* tools/ppm2tiff.c: avoid zero size buffer vulnerability.
	CVE-2012-4564 - Thanks to Huzaifa Sidhpurwala of the
	Red Hat Security Response team for the fix.

2012-10-18  Frank Warmerdam  <warmerdam@google.com>

	* tif_zip.c: Avoid crash on NULL error messages.

2012-09-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff 4.0.3 released.

2012-09-20  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* Makefile.am: Update to Automake 1.12.4

2012-08-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* Makefile.in: Update to Automake 1.12.3

	* libtiff{tiff.h, tif_print.c, tif_dirinfo.c, tif_dirread.c}: Add
	some TIFF/FX support in libtiff.  Add the tag definitions to
	tiff.h.  Add the related TIFF field definitions to tif_dirinfo.c,
	and also fixes an error in a comment.  Adds the photometric values
	to tif_print.c, and fixes a bug.  These changes are by Steve
	Underwood.

2012-08-13  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_write.c: Fix bug rewriting image tiles in a
	compressed file: http://trac.osgeo.org/gdal/ticket/4771

2012-08-02  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_dirread.c: report error in case of mismatch value
	counts for tags (ie. DotRange).

2012-07-26  Tom Lane  <tgl@sss.pgh.pa.us>

	* libtiff/{tiffio.h, tif_dirinfo.c, libtiff.def}: Add six new
 	functions TIFFFieldTag(), TIFFFieldName(), TIFFFieldDataType(),
	TIFFFieldPassCount(), TIFFFieldReadCount(), TIFFFieldWriteCount()
	as external accessors for the opaque type TIFFField.

	* tools/tiffset.c: Make tiffset use the above functions instead of
	relying on library private headers.

2012-07-19  Tom Lane  <tgl@sss.pgh.pa.us>

	* tools/tiff2pdf.c: Fix two places where t2p_error didn't get set
	after a malloc failure.  No crash risk AFAICS, but the program
	might not report exit code 1 as desired.  h/t mancha@mac.hush.com

2012-07-18  Tom Lane  <tgl@sss.pgh.pa.us>

	* tools/tiff2pdf.c: Fail when TIFFSetDirectory() fails.  This
	prevents core dumps or perhaps even arbitrary code execution when
	processing a corrupt input file (CVE-2012-3401).

2012-07-06  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* test/raw_decode.c (main): Test fixes to work with IJG JPEG 7+.
	IJG JPEG 7+ uses a different upsampling algorithm which produces
	different numeric results.

	* libtiff/tif_jpeg.c (JPEGPreDecode): Patch from Even Rouault to
	work with IJG JPEG 7+.

2012-07-04  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* test/raw_decode.c: Add changes so that test can run with build
	directory outside of source directory.

2012-07-02  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_jpeg.c: Fix handling when writing RGBA jpeg compressed
	imagery (http://trac.osgeo.org/gdal/ticket/4732)

2012-06-20  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_fax3.c: fix memory initialization of runs, only
	partly done.

	* libtiff/tif_pixarlog.c: Make sure tbuf is large enough for one
	full "stride" past the end.

2012-06-19  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_packbits.c: fix read past end of data buffer.

2012-06-15  Frank Warmerdam  <warmerdam@google.com>

	*  libtiff 4.0.2 released.

	* tools/tif2pdf.c, tools/tifdump.c: avoid unitialized variable
	warnings with clang.

2012-06-15  Tom Lane  <tgl@sss.pgh.pa.us>

	* tools/tiff2pdf.c: Defend against integer overflows while
	calculating required buffer sizes (CVE-2012-2113).

2012-06-12  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_print.c: Be careful about printing corrupt inknames.

	* libtiff/tif_fax3.c: Ensure runs array is initialized to zeros.

2012-06-07  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_print.c: avoid pretty printing other fields when
	we don't have the proper amount and type of data or if the field
	is actually autodefined.

2012-06-05  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_tile.c, libtiff/tif_strip.c: Ensure that illegal
	ycbcrsubsampling values result in a runtime error, not just an
	assertion.

	* tests/custom_dir.c: Add testing of EXIF and custom directory
	reading and writing.

	* libtiff/tif_dir.c, libtiff/tiffio.h: Add TIFFCreateCustomDirectory()
	and TIFFCreateEXIFDirectory() functions.

	* libtiff/tif_dir.c, tif_print.c : Remove FIELD_CUSTOM handling for
	PAGENUMBER, HALFTONEHINTS, and YCBCRSUBSAMPLING.  Implement DOTRANGE
	differently.  This is to avoid using special TIFFGetField/TIFFSetField
	rules for these fields in non-image directories (like EXIF).

2012-06-04  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_jpeg.c: Remove code for fixing up h_sampling and v_sampling
	in JPEGPreDecode().  If a fixup will be done it needs to be done sooner
	in JPEGFixupTagsSubsampling() or else buffer sized may be wrong.

2012-06-01  Frank Warmerdam  <warmerdam@google.com>

	* tools/tiffinfo.c: Do not try to read image data in EXIF directories.

	* libtiff/tif_getimage.c: added support for _SEPARATED CMYK images.
	http://bugzilla.maptools.org/show_bug.cgi?id=2379

	* libtiff/tif_unix.c: use strerror() to return a more specific error message
	on failed open.
	http://bugzilla.maptools.org/show_bug.cgi?id=2341

	* libtiff/tif_jpeg.c: Fix JPEGDecodeRaw() bugs.
	http://bugzilla.maptools.org/show_bug.cgi?id=2386

	* tests/decode_raw.c, tests/images/quad-tile.jpg.tiff: add limited support
	for testing jpeg in tiff image decoding including the "raw" decode interface.

2012-05-31  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_jpeg.c: avoid overrunning the end of the output buffer in
	JPEGDecodeRaw() - mostly likely to occur when there is confusion about
	sampling values.

	* libtiff/tif_read.c: Make sure tif_rawdatasize is cleared when tif_rawdata is freed.

	* libtiff/tif_getimage.c: Add support for greyscale+alpha c/o Jérémie Laval.
	http://bugzilla.maptools.org/show_bug.cgi?id=2398

2012-05-29  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_dir.c: avoid using specific set/get logic to process fields in custom directories,
	like EXIF directories.  This fixes problems like a tag "320" existing in a custom directory getting
	processed as if it were a colormap when it isn't really.  Damn the wide variety of argument formulations
	to get/set functions for different tags!

	* libtiff/tif_dir.c: Ensure that we keep track of when tif_rawdata
	is a pointer into an mmap()ed file via TIFF_BUFFERMMAP flag.

2012-05-24  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_pixarlog.c: Allocate working buffer one word larger since we "forward
	accumulate" and overwrite the end by one word in at least some cases.

2012-05-23  Frank Warmerdam  <warmerdam@google.com>

	* libtiff/tif_pixarlog.c: avoid accessing out of the lookup arrays for out of range inputs.

	* tools/tiffinfo.c: initialize h=0 to avoid undefined variable for degenerate files.

	* libtiff/tif_ojpeg.c: if OJPEGWriteHeader() fails once do not bother trying again on
	the same image.

	* libtiff/tif_ojpeg.c: make things more resilient in the face of files without
	stripbytecounts or stripoffsets or where loading these fails.

	* libtiff/tif_print.c: be careful about whether min/max values are singular
	or one per sample.

	* libtiff/tif_print.c: Avoid confusion about count size when printing custom fields.
	May affect things like ISOSpeedRatings.

	* libtiff/tif_dir.c: avoid one byte past end of ink names reading
	in some cases.

2012-05-19  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* man/TIFFGetField.3tiff: Correct the 'count' field type in the
	example for how to retreive the value of unsupported tags.

2012-03-30  Frank Warmerdam  <warmerdam@google.com>

	* tif_getimage.c: Fix size overflow (zdi-can-1221,CVE-2012-1173)
	care of Tom Lane @ Red Hat.

2012-02-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff 4.0.1 released.

	* Update automake used to 1.11.3.

	* libtiff/tiffio.h: Use double-underbar syntax in GCC printf
	attribute specification to lessen the risk of accidental macro
	substitution.  Patch from Vincent Torri.

2012-01-31  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dir.c, libtiff/tif_dirread.c: Extra caution around
	assumption tag fetching is always successful.

	* libtiff/tif_jpeg.c: Extra caution for case where sp is NULL.

2012-01-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* configure.ac: Add support for using library symbol versioning on
	ELF systems with the GNU linker.  Support is enabled via
	--enable-ld-version-script.  Disabled by default for now until
	there is a decision for how to deploy a libtiff with versioned
	symbols after libtiff 4.0.0 was already released.

2011-12-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/tif_win32.c: Eliminate some minor 64-bit warnings in

	tif_win32.c.  Patch by Edward Lam.

	* configure.ac: Add libtiff private dependency on -llzma for
	pkg-config.  Patch by Mark Brand.
	Updated Automake to 1.11.2.

2011-12-21  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff 4.0.0 released.

2011-12-08  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dirread.c, libtiff/tif_read.c: more cautious checking
	of _TIFFFillStriles() results (#gdal 4372)

2011-12-07  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dirread.c: fixes to deal with invalid files where
	_TIFFFillStriles() fails, and we try to chop up strips (gdal #4372)

	* libtiff/tif_dirread.c: fix error reporting when there is no
	tag information struct and name (gdal #4373)

2011-10-22  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* Update GNU libtool to 2.4.2.

	* tools/tiffsplit.c (tiffcp): TIFFGetField count field should be
	uint32 type for TIFFTAG_JPEGTABLES.  Patch by Christophe
	Deroulers.

2011-06-21  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/libtiff.def: Restore TIFFMergeFieldInfo.

2011-05-31  Jim Meyering  <meyering@redhat.com>

	* libtiff/tif_dirread.c (TIFFFetchStripThing): Free "data" also
	upon failure to allocate "resizeddata".
	* tools/tiff2ps.c (PSDataBW): Zero buffer *after* checking for
	allocation failure, not before.
	* libtiff/tif_ojpeg.c: plug leaks on OJPEG read failure path
	* tools/rgb2ycbcr.c (cvtRaster): unchecked malloc
	* libtiff/tif_jpeg.c, tools/tiff2pdf.c, tools/tiff2ps.c: mark
	NULL-deref and possible overflow
	* tools/tiff2pdf.c: remove decl+set of set-but-not-used local, "written"
	* libtiff/tif_jpeg.c (JPEGInitializeLibJPEG): Remove declaration
	and set of otherwise unused local, data_is_empty.
	* libtiff/tif_jpeg.c (JPEGDecodeRaw) [JPEG_LIB_MK1_OR_12BIT]:
	Diagnose out-of-memory failure and return 0 rather than
	dereferencing NULL.

2011-05-24  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dirread.c: produce special error message for zero tag
	directories instead of error out on the malloc(0) failure.

2011-05-16  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dirinfo.c: Restore TIFFMergeFieldInfo() and
	related declarations as they are in active use by libraries
	such as libgeotiff, and work just fine.  (#2315)

2011-04-20  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_dirinfo.c,tiffio.h: Remove the obsolete
	TIFFMergeFieldInfo/TIFFFindFieldInfo/TIFFFindFieldInfoByName API.
	http://bugzilla.maptools.org/show_bug.cgi?id=2315

	* libtiff/libtiff.def: add some missing (64bit) APIs.
	http://bugzilla.maptools.org/show_bug.cgi?id=2316

2011-04-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff 4.0.0beta7 released.

2011-04-09  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* configure.ac: Should use AC_CANONICAL_HOST since host specifies
	the run-time target whereas target is used to specify the final
	output target if the package is a build tool (like a compiler),
	which libtiff is not.  Resolves libtiff bug 2307 "Use
	AC_CANONICAL_HOST macro".

2011-04-02  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* configure.ac: Support configuring TIFF_INT64_FORMAT and
	TIFF_UINT64_FORMAT appropriately for MinGW32.

	* tools/tiffdump.c (ReadDirectory): MinGW32 needs to use WIN32
	printf conventions for 64-bit types because it uses the WIN32 CRT.

	* libtiff/{tif_dumpmode.c,tif_luv.c,tif_lzw.c,tif_print.c,
	tif_read.c,tif_strip.c,tif_thunder.c}: MinGW32 needs to use WIN32
	printf conventions for 64-bit types because it uses the WIN32 CRT.

	* tools/tiff2pdf.c (t2p_write_pdf_string): Fix printf syntax not
	understood by WIN32 CRT.

	* libtiff/tif_ojpeg.c: Fixes to compile with MinGW32 GCC.

	* tools/fax2ps.c (main): Use tmpfile() rather than mkstemp() since
	it is much more portable.  Tmpfile is included in ISO/IEC
	9899:1990 and the WIN32 CRT.

2011-03-26  Frank Warmerdam  <warmerdam@pobox.com>

	* tools/tiffset.c: add -d and -sd switches to allow operation on
	a particular directory, not just the first (jef).

2011-03-21  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_thunder.c: Correct potential buffer overflow with
	thunder encoded files with wrong bitspersample set.  The libtiff
	development team would like to thank Marin Barbella and TippingPoint's
	Zero Day Initiative for reporting this vulnerability (ZDI-CAN-1004,
	CVE-2011-1167).
	http://bugzilla.maptools.org/show_bug.cgi?id=2300

2011-03-10  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_fax3.h: Fix to last change allowing zero length
	runs at the start of a scanline - needed for legal cases.

2011-03-02  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_fax3.h: Protect against a fax VL(n) codeword commanding
	a move left.  Without this, a malicious input file can generate an
	indefinitely large series of runs without a0 ever reaching the right
	margin, thus overrunning our buffer of run lengths.  Per CVE-2011-0192.
	This is a modified version of a patch proposed by Drew Yao of Apple
	Product Security.  It adds an unexpected() report, and disallows the
	equality case, since emitting a run without increasing a0 still allows
	buffer overrun.

2011-02-23  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_jpeg.c: avoid divide by zero in degenerate case (#2296)

	* tools/tiff2rgba.c: close source file on error to make leak
	detection easier.

	* libtiff/tif_getimage.c: avoid leaks if TIFFRGBAImageBegin() fails.

	http://bugzilla.maptools.org/show_bug.cgi?id=2295

2011-02-22  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_lzma.c: Maintain tif_rawcc/tif_rawcp (CHUNKY_STRING_READ
	_SUPPORT)

2011-02-18  Frank Warmerdam  <warmerdam@pobox.com>

	* configure.ac, configure: Added support for --enable-chunky-strip-read
	configure option to enable the experimental feature from a couple
	months ago for reading big strips in chunks.

	* configure.ac, tif_read.c, tif_readdir.c, tif_dir.h, tiffiop.h,
	tif_write.c, tif_print.c, tif_jpeg.c, tif_dirwrite.c, tif_write.c:
	Implement optional support for deferring the load of strip/tile
	offset and size tags for optimized scanning of directories.  Enabled
	with the --enable-defer-strile-load configure option (DEFER_STRILE_LOAD
	#define in tif_config.h).

2011-02-11  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_print.c: remove unused variable.

2011-02-09  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_win32.c: avoid error/warning buffer overrun problem
	with non-console (popup message) builds on win32.

	http://bugzilla.maptools.org/show_bug.cgi?id=2293

2011-01-24  Olivier Paquet  <olivier.paquet@gmail.com>

	* libtiff/{tif_dir.{h,c}, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c,
	tif_print.c, tiff.h, tiffiop.h} : Added support for
	TIFFTAG_SMINSAMPLEVALUE and TIFFTAG_SMAXSAMPLEVALUE to have different
	values for each sample. Presents the min/max of all samples by default for
	compatibility. TIFFSetField/TIFFGetField can be made to handle those tags
	as arrays by changing the new TIFFTAG_PERSAMPLE pseudo tag.
	http://www.asmail.be/msg0055458208.html

2011-01-06  Frank Warmerdam  <warmerdam@pobox.com>

	* libtiff/tif_pixarlog.c: Note that tif_rawcc/tif_rawcp are not
	maintained.

	* libtiff/tif_zip.c: Maintain tif_rawcc/tif_rawcp when decoding
	for CHUNKY_STRIP_READ_SUPPORT.

	* libtiff/tif_jpeg.c: ensure that rawcc and rawcp are maintained
	during JPEGPreDecode and JPEGDecode calls.
	* libtiff/tif_read.c: larger read ahead for CHUNKY_STRIP_READ_SUPPORT,
	as compression formats like JPEG keep 16 lines interleaved in a sense
	and might need to touch	quite a bit of data.

	http://trac.osgeo.org/gdal/ticket/3894

2011-01-03  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_jpeg.c: Fix regressions with 2 and 3 band images
	caused by commit on 2010-12-14.  Submitted by e-mail from
	Even Rouault <even.rouault@mines-paris.org>

2010-12-31  Olivier Paquet  <olivier.paquet@gmail.com>

	* libtiff/tif_dirwrite.c: Fixed writing of TIFFTAG_REFERENCEBLACKWHITE.
	http://bugzilla.maptools.org/show_bug.cgi?id=2266

2010-12-23  Andrey Kiselev  <dron@ak4719.spb.edu>

	* tools/tiffcp.c, man/tiffcp.1: Added support for specifying the
	compression level parameter (preset) for Deflate and LZMA encoders,
	e.g "-c lzma:p1" or "-c zip:p9".

	* libtiff/tif_lzma.c: Properly set the LZMA2 compression level
	(preset) in LZMAVSetField().

2010-12-18  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff/Makefile.am (libtiff_la_SOURCES): Added tif_lzma.c to
	Makefile.

2010-12-14  Andrey Kiselev  <dron@ak4719.spb.edu>

	* configure.ac, libtiff/{tif_codec.c, tif_config.h.in, tiff.h,
	tiffiop.h, tif_lzma.c}, tools/tiffcp.c, man/tiffcp.1: Implement a new
	TIFF compression scheme LZMA reserving a new value 34925 for
	Compression tag. As per
	bug http://bugzilla.maptools.org/show_bug.cgi?id=2221

2010-12-14  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_dirread.c: tolerate some cases where
	FIELD_COLORMAP is missing
	http://bugzilla.maptools.org/show_bug.cgi?id=2189

2010-12-14  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_read.c: change read_ahead to tmsize_t
	http://bugzilla.maptools.org/show_bug.cgi?id=2222

2010-12-14  Lee Howard <faxguy@howardsilvan.com>

	* configure.ac, libtiff/Makefile.am: Build tif_win32.c on
	Windows except on Cygwin
	http://bugzilla.maptools.org/show_bug.cgi?id=2224

2010-12-14  Lee Howard <faxguy@howardsilvan.com>

	* tools/gif2tiff.c: fix buffer overrun
	http://bugzilla.maptools.org/show_bug.cgi?id=2270

2010-12-14  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in order
	to improve compatibility with various viewers
	submitted by e-mail from Dwight Kelly <dkelly@apago.com>

2010-12-13  Lee Howard <faxguy@howardsilvan.com>

	* tools/fax2ps.c: be consistent with page-numbering
	http://bugzilla.maptools.org/show_bug.cgi?id=2225

2010-12-13  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_color.c: prevent crash in handling bad TIFFs
	resolves CVE-2010-2595
	http://bugzilla.maptools.org/show_bug.cgi?id=2208

2010-12-13  Lee Howard <faxguy@howardsilvan.com>

	* tools/tiffcrop.c: new release by Richard Nolde
	http://bugzilla.maptools.org/show_bug.cgi?id=2004

2010-12-12  Lee Howard <faxguy@howardsilvan.com>

	* tools/tiff2pdf.c: fix colors for images with RGBA
	interleaved data
	http://bugzilla.maptools.org/show_bug.cgi?id=2250

2010-12-12  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_dirread.c: fix for Zeiss LSM and Canon CR2 files
	http://bugzilla.maptools.org/show_bug.cgi?id=2164

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* tools/tiff2pdf.c: remove invalid duplication for Lab
	http://bugzilla.maptools.org/show_bug.cgi?id=2162

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_jpeg.c: fix use of clumplines calculation
	http://bugzilla.maptools.org/show_bug.cgi?id=2149

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* tools/fax2ps.c: replace unsafe tmpfile() with mkstemp()
	http://bugzilla.maptools.org/show_bug.cgi?id=2118

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_ojpeg.c, libtiff/tif_pixarlog.c,
	  libtiff/tif_zip.c: fix build errors for VC6
	http://bugzilla.maptools.org/show_bug.cgi?id=2105

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_stream.cxx: warnings cleanup
	http://bugzilla.maptools.org/show_bug.cgi?id=2091
	* libtiff/tif_dirread.c: warnings cleanup
	http://bugzilla.maptools.org/show_bug.cgi?id=2092

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* tools/tiff2pdf.c: add fill-page option
	http://bugzilla.maptools.org/show_bug.cgi?id=2051

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_dirread.c: modify warnings
	http://bugzilla.maptools.org/show_bug.cgi?id=2016

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* libtiff/tif_ojpeg.c: fix buffer overflow on problem data
        http://bugzilla.maptools.org/show_bug.cgi?id=1999

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

	* tools/tiffinfoce.c: strip byte counts are uint64* now

2010-12-11  Lee Howard <faxguy@howardsilvan.com>

        * libtiff/tif_ojpeg.c: fix crash when reading a TIFF with a zero
        or missing byte-count tag
        * tools/tiffsplit.c: abort when reading a TIFF without a byte-count
        per http://bugzilla.maptools.org/show_bug.cgi?id=1996

2010-12-08  Lee Howard <faxguy@howardsilvan.com>

        * libtiff/tif_dirread.c: fix crash when reading a badly-constructed
        TIFF per http://bugzilla.maptools.org/show_bug.cgi?id=1994

2010-12-06  Lee Howard <faxguy@howardsilvan.com>

        * libtiff/tif_open.c: Fix mode check before opening a file.
        http://bugzilla.maptools.org/show_bug.cgi?id=1906

2010-11-27  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* libtiff-4.pc.in: Added libtiff pkg-config .pc file support.
	Patch by Vincent Torri.

2010-10-21  Frank Warmerdam  <warmerdam@pobox.com>

	* tools/tiffinfo.c: avoid direct reference to _TIFFerrorHandler.

	* libtiff/tif_config.vc.h: define snprintf to _snprintf for tiff2pdf.

	* libtiff/libtiff.def: export _TIFFCheckMalloc for tools.

2010-09-25  Lee Howard <faxguy@howardsilvan.com>

	* tools/tiff2ps.c: improvements and enhancements from Richard Nolde
	with additional command line options for Document Title,
	Document Creator, and Page Orientation

2010-07-13  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>

	* tools/tiffcrop.c: Patch from Richard Nolde to avoid a
	potentially unterminated buffer due to using an exceptionally long
	file name.

2010-07-08  Andrey Kiselev  <dron@ak4719.spb.edu>

	* tools/tiff2pdf.c: Fixed ID buffer filling in
	t2p_write_pdf_trailer(), thanks to Dmitry V. Levin.

2010-07-07  Andrey Kiselev  <dron@ak4719.spb.edu>

	* libtiff/tif_dirread.c: Really reset the tag count in CheckDirCount()
	to expected value as the warning message suggests. As per bug
	http://bugzilla.maptools.org/show_bug.cgi?id=1963

2010-07-06  Andrey Kiselev  <dron@ak4719.spb.edu>

	* tools/tiffset.c: Properly handle TIFFTAG_PAGENUMBER,
	TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING, TIFFTAG_DOTRANGE
	which should be set by value.

	* libtiff/tif_dirinfo.c: Don't use assertions in _TIFFFieldWithTag()
	and _TIFFFieldWithName() if the tag is not found in the tag table.
	This should be normal situation and returned NULL value should be
	properly handled by the caller.

2010-07-02  Andrey Kiselev  <dron@ak4719.spb.edu>

	* libtiff/tif_getimage.c: Avoid wrong mat                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 