summaryrefslogtreecommitdiffstats
path: root/patches/source/libtiff/tiff-3.9.7_CVE-2012-4447_CVE-2012-4564_CVE-2013-1960_CVE-2013-1961.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/source/libtiff/tiff-3.9.7_CVE-2012-4447_CVE-2012-4564_CVE-2013-1960_CVE-2013-1961.diff')
-rw-r--r--patches/source/libtiff/tiff-3.9.7_CVE-2012-4447_CVE-2012-4564_CVE-2013-1960_CVE-2013-1961.diff3813
1 files changed, 3813 insertions, 0 deletions
diff --git a/patches/source/libtiff/tiff-3.9.7_CVE-2012-4447_CVE-2012-4564_CVE-2013-1960_CVE-2013-1961.diff b/patches/source/libtiff/tiff-3.9.7_CVE-2012-4447_CVE-2012-4564_CVE-2013-1960_CVE-2013-1961.diff
new file mode 100644
index 000000000..2ee6847c6
--- /dev/null
+++ b/patches/source/libtiff/tiff-3.9.7_CVE-2012-4447_CVE-2012-4564_CVE-2013-1960_CVE-2013-1961.diff
@@ -0,0 +1,3813 @@
+From 304327d825c7ba6a9f560d0ca792304f0b03e3b3 Mon Sep 17 00:00:00 2001
+From: mancha <mancha1@hush.com>
+Date: Sun, 11 Aug 2013
+Subject: Multiple CVEs addressed and bugs fixed.
+
+Mega-patch against libtiff-3.9.7 constructed from upstream commits
+that syncs it to the last CVS revision (5/2/2013). It fixes:
+
+ a. CVE-2012-4447
+ b. CVE-2012-4564
+ c. CVE-2013-1960
+ d. CVE-2013-1961
+ e. auto-rotate option bug
+ f. TIFFPrintDirectory bug
+---
+ ChangeLog | 781 ++++++++++++++++++++++--------------------
+ Makefile.in | 2
+ aclocal.m4 | 6
+ build/Makefile.in | 2
+ contrib/Makefile.in | 2
+ contrib/acorn/Makefile.in | 2
+ contrib/addtiffo/Makefile.in | 2
+ contrib/dbs/Makefile.in | 2
+ contrib/dbs/xtiff/Makefile.in | 2
+ contrib/dbs/xtiff/xtiff.c | 6
+ contrib/iptcutil/Makefile.in | 2
+ contrib/mac-cw/Makefile.in | 2
+ contrib/mac-mpw/Makefile.in | 2
+ contrib/mfs/Makefile.in | 2
+ contrib/pds/Makefile.in | 2
+ contrib/ras/Makefile.in | 2
+ contrib/stream/Makefile.in | 2
+ contrib/tags/Makefile.in | 2
+ contrib/win_dib/Makefile.in | 2
+ html/Makefile.in | 2
+ html/images/Makefile.in | 2
+ html/man/Makefile.in | 2
+ libtiff/Makefile.in | 2
+ libtiff/tif_codec.c | 5
+ libtiff/tif_dirinfo.c | 4
+ libtiff/tif_pixarlog.c | 94 ++---
+ libtiff/tif_print.c | 15
+ man/Makefile.in | 2
+ port/Makefile.in | 2
+ test/Makefile.in | 2
+ tools/Makefile.in | 2
+ tools/ppm2tiff.c | 39 +-
+ tools/rgb2ycbcr.c | 5
+ tools/tiff2bw.c | 4
+ tools/tiff2pdf.c | 313 ++++++++--------
+ tools/tiff2ps.c | 20 -
+ tools/tiffcrop.c | 12
+ tools/tiffdither.c | 4
+ 38 files changed, 728 insertions(+), 628 deletions(-)
+
+diff --git a/ChangeLog b/ChangeLog
+index c18d495..2d8bc7c 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,51 @@
++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-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 of being retested for each
++ page. Patch by Richard Nolde.
++
++2012-12-12 Tom Lane <tgl@sss.pgh.pa.us>
++
++ * libtiff/tif_print.c: Back-patch recent fixes in
++ TIFFPrintDirectory to make it handle field_passcount fields sanely
++ for both TIFF_VARIABLE and TIFF_VARIABLE2 cases.
++
++2012-12-10 Tom Lane <tgl@sss.pgh.pa.us>
++
++ * tools/ppm2tiff.c: Back-patch fix for CVE-2012-4564.
++
++2012-12-10 Tom Lane <tgl@sss.pgh.pa.us>
++
++ * libtiff/tif_pixarlog.c: Back-patch recent security fixes for
++ tif_pixarlog.c, namely the fix for CVE-2012-4447 and protections
++ against accessing outside the lookup arrays for out of range
++ inputs.
++
++2012-11-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
++
++ * automake: Update Automake to 1.12.5 release.
++
+ 2012-09-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+ * libtiff 3.9.7 released.
+@@ -31,7 +79,7 @@
+
+ * libtiff/tif_dirread.c: Avoid trusting samplesperpixel's default
+ of 1 for purposes of trimming tags. This is to get some super
+- crappy OJPEG files to work again. Grr.
++ crappy OJPEG files to work again. Grr.
+ http://bugzilla.maptools.org/show_bug.cgi?id=2348
+
+ 2012-06-01 Frank Warmerdam <warmerdam@google.com>
+@@ -101,8 +149,8 @@
+ * libtiff/tiffiop.h: avoid declaring int64/uint64 on AIX with XLC
+ where they are already available. (#2301)
+
+- * libtiff/tif_thunder.c: Correct potential buffer overflow with
+- thunder encoded files with wrong bitspersample set. The libtiff
++ * 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).
+@@ -110,18 +158,18 @@
+
+ 2011-03-10 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_fax3.h: Fix to last change allowing zero length
++ * 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
++ * 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
++ 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-25 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -133,7 +181,7 @@
+ 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
++ 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>
+@@ -188,13 +236,13 @@
+
+ 2010-12-12 Lee Howard <faxguy@howardsilvan.com>
+
+- * tools/tiff2pdf.c: fix colors for images with RGBA
++ * tools/tiff2pdf.c: fix colors for images with RGBA
+ interleaved data
+ http://bugzilla.maptools.org/show_bug.cgi?id=2250
+
+ 2010-12-11 Lee Howard <faxguy@howardsilvan.com>
+
+- * tools/tiff2pdf.c: remove invalid duplication for Lab
++ * 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>
+@@ -236,7 +284,7 @@
+
+ 2010-12-07 Lee Howard <faxguy@howardsilvan.com>
+
+- * libtiff/tif_jpeg.c, libtiff/tif_strip.c: apply patch for
++ * libtiff/tif_jpeg.c, libtiff/tif_strip.c: apply patch for
+ CVE-2010-3087 per bug
+ http://bugzilla.maptools.org/show_bug.cgi?id=2140
+
+@@ -248,7 +296,7 @@
+ 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,
++ with additional command line options for Document Title,
+ Document Creator, and Page Orientation
+
+ 2010-07-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+@@ -349,14 +397,14 @@
+ * libtiff/tif_dirread.c: Fixed bad handling of out of order tags
+ definated late by a codec (#2210)
+
+- * libtiff/tif_dirread.c: Fixed inadequate validation of the
++ * libtiff/tif_dirread.c: Fixed inadequate validation of the
+ SubjectDistance field (#2212).
+
+- * tiff2pdf.c: Fix assorted bugs in tiff2pdf: missing "return"
+- in t2p_read_tiff_size() causes t2p->tiff_datasize to be set entirely
+- wrong for COMPRESSION_JPEG case, resulting in memory stomp if actual
+- size is larger. Also, there are a bunch of places that try to
+- memset() a malloc'd buffer before checking for malloc failure, which
++ * tiff2pdf.c: Fix assorted bugs in tiff2pdf: missing "return"
++ in t2p_read_tiff_size() causes t2p->tiff_datasize to be set entirely
++ wrong for COMPRESSION_JPEG case, resulting in memory stomp if actual
++ size is larger. Also, there are a bunch of places that try to
++ memset() a malloc'd buffer before checking for malloc failure, which
+ would result in core dump if there actually were a failure. (#2211)
+
+ 2010-06-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+@@ -452,13 +500,13 @@
+
+ 2010-05-07 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_jpeg.c: Ensure that quality is always set in
+- JPEGPreEncode(), not just when we want to output local tables.
++ * libtiff/tif_jpeg.c: Ensure that quality is always set in
++ JPEGPreEncode(), not just when we want to output local tables.
+ Otherwise the quality used during compression may not be right and
+ might not match the tables in the tables tag. This bug only occurs
+ when seeking between directories in the midst of writing blocks.
+ http://trac.osgeo.org/gdal/ticket/3539
+-
++
+ 2010-05-05 Olivier Paquet <olivier.paquet@gmail.com>
+
+ * libtiff/tif_print.c: Have TIFFTAG_REFERENCEBLACKWHITE always print 6
+@@ -476,11 +524,11 @@
+ 2010-02-22 Lee Howard <faxguy@howardsilvan.com>
+
+ * libtiff/tif_jpeg.c: Do not generate a JPEGTables tag when creating
+- the JPEG TIFF as is is not required in order to prevent it from
+- being unused and filled with invalid data. (Leave it to be
++ the JPEG TIFF as is is not required in order to prevent it from
++ being unused and filled with invalid data. (Leave it to be
+ generated by later activity.)
+ http://bugzilla.maptools.org/show_bug.cgi?id=2135
+- * tools/tiff2pdf.c: Write the JPEG SOI headers into the TIFF strip
++ * tools/tiff2pdf.c: Write the JPEG SOI headers into the TIFF strip
+ data rather than skipping them. This fixes the ability to view in
+ Acrobat Reader, Evince, and Ghostscript.
+ http://bugzilla.maptools.org/show_bug.cgi?id=2135
+@@ -491,13 +539,13 @@
+ 2010-01-06 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_dir.c: Ensure tile and scanline sizes are reset
+- when moving to new directories.
++ when moving to new directories.
+ http://bugzilla.maptools.org/show_bug.cgi?id=1936
+
+ 2009-12-03 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_jpeg.c: Fix a couple of issues that trigger failures in
+- some cases when using TIFFReadScanline() with JPEG compressed
++ some cases when using TIFFReadScanline() with JPEG compressed
+ subsampled ycbcr images.
+ http://bugzilla.maptools.org/show_bug.cgi?id=1936
+
+@@ -610,7 +658,7 @@
+
+ 2009-06-22 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_lzw.c: Fix buffer underflow bug.
++ * libtiff/tif_lzw.c: Fix buffer underflow bug.
+ http://bugzilla.maptools.org/show_bug.cgi?id=2065
+
+ 2009-06-03 Frank Warmerdam <warmerdam@pobox.com>
+@@ -621,7 +669,7 @@
+
+ 2009-02-12 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_luv.c: Fix handling of tiled logluv images.
++ * libtiff/tif_luv.c: Fix handling of tiled logluv images.
+ http://bugzilla.maptools.org/show_bug.cgi?id=2005
+
+ 2009-01-23 Frank Warmerdam <warmerdam@pobox.com>
+@@ -635,7 +683,7 @@
+
+ 2009-01-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+- * tools/tiff2ps.c: Remove spurious message printed to stderr.
++ * tools/tiff2ps.c: Remove spurious message printed to stderr.
+
+ 2009-01-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+@@ -668,7 +716,7 @@
+ 2008-12-31 Frank Warmerdam <warmerdam@pobox.com>
+
+ * tools/tiffcrop.c, man/tiffcrop.1: A major update from Richard
+- Nolde.
++ Nolde.
+
+ 2008-12-21 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -678,7 +726,7 @@
+
+ 2008-12-21 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_getimage.c, tiffio.h: More ABI corrections.
++ * libtiff/tif_getimage.c, tiffio.h: More ABI corrections.
+ Removed SubsamplingHor/Ver from TIFFRGBAImage structure.
+ http://bugzilla.maptools.org/show_bug.cgi?id=1980
+
+@@ -719,15 +767,15 @@
+
+ 2008-05-24 Frank Warmerdam <warmerdam@pobox.com>
+
+- * tif_codec.c: Avoid NULL pointer dereferencing for exotic
++ * tif_codec.c: Avoid NULL pointer dereferencing for exotic
+ compression codec codes.
+
+ * tif_dirread.c: zero tif->tif_dir after freeing the directory
+ in TIFFReadCustomDirectory(). I don't exactly remember why this
+- was important.
++ was important.
+
+ * tif_dirwrite.c: Fix potential memory leak writing large double
+- tags.
++ tags.
+
+ * tif_dirread.c: Fix unchecked malloc result.
+
+@@ -747,12 +795,12 @@
+
+ 2007-11-22 Frank Warmerdam <warmerdam@pobox.com>
+
+- * tif_write.c: Rip out the fancy logic in TIFFAppendToStrip() for
+- establishing if an existing tile can be rewritten to the same location
+- by comparing the current size to all the other blocks in the same
+- directory. This is dangerous in many situations and can easily
++ * tif_write.c: Rip out the fancy logic in TIFFAppendToStrip() for
++ establishing if an existing tile can be rewritten to the same location
++ by comparing the current size to all the other blocks in the same
++ directory. This is dangerous in many situations and can easily
+ corrupt a file. (observed in esoteric GDAL situation that's hard to
+- document). This change involves leaving the stripbytecount[] values
++ document). This change involves leaving the stripbytecount[] values
+ unaltered till TIFFAppendToStrip(). Now we only write a block back
+ to the same location it used to be at if the new data is the same
+ size or smaller - otherwise we move it to the end of file.
+@@ -760,17 +808,17 @@
+ * tif_dirwrite.c: Try to avoid writing out a full readbuffer of tile
+ data when writing the directory just because we have BEENWRITING at
+ some point in the past. This was causing odd junk to be written out
+- in a tile of data when a single tile had an interleaving of reading
+- and writing with reading last. (highlighted by gdal
+- autotest/gcore/tif_write.py test 7.
++ in a tile of data when a single tile had an interleaving of reading
++ and writing with reading last. (highlighted by gdal
++ autotest/gcore/tif_write.py test 7.
+
+ * tif_predict.c: use working buffer in PredictorEncodeTile to avoid
+- modifying callers buffer.
++ modifying callers buffer.
+ http://trac.osgeo.org/gdal/ticket/1965
+
+- * tif_predict.c/h, tif_lzw.c, tif_zip.c: Improvements so that
++ * tif_predict.c/h, tif_lzw.c, tif_zip.c: Improvements so that
+ predictor based encoding and decoding works in read-write update
+- mode properly.
++ mode properly.
+ http://trac.osgeo.org/gdal/ticket/1948
+
+ 2007-10-05 Frank Warmerdam <warmerdam@pobox.com>
+@@ -785,7 +833,7 @@
+
+ 2007-07-18 Andrey Kiselev <dron@ak4719.spb.edu>
+
+- * libtiff/{Makefile.am, Makefile.v}: Do not distribute tiffconf.h,
++ * libtiff/{Makefile.am, Makefile.v}: Do not distribute tiffconf.h,
+ remove tif_config.h/tiffconf.h during cleaning. As per bug
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1573
+@@ -803,14 +851,13 @@
+ 2007-07-03 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * tools/tiff2ps.c: Added support 16-bit images as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1566
+
+ Patch from William Bader.
+
+ * tools/tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and
+ significant upgrade of the whole utility as per bug
+-
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1560
+
+ Now we don't need tiffiop.h in tiff2pdf anymore and will open output
+@@ -828,7 +875,7 @@
+
+ * libtiff/tif_dirwrite.c: Fixed problem introduced with a fix for a
+ byte swapping issue
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1363
+
+ As per bug
+@@ -846,7 +893,7 @@
+ * libtiff/{tif_dir.h, tif_dirread.c, tif_dirinfo.c, tif_jpeg.c,
+ tif_fax3.c, tif_jbig.c, tif_luv.c, tif_ojpeg.c, tif_pixarlog.c,
+ tif_predict.c, tif_zip.c}: Finally fix bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1274
+
+ by introducing _TIFFMergeFieldInfo() returning integer error status
+@@ -857,7 +904,7 @@
+
+ 2007-04-07 Frank Warmerdam <warmerdam@pobox.com>
+
+- * contrib/addtiffo/tif_overview.c: Fix problems with odd sized output
++ * contrib/addtiffo/tif_overview.c: Fix problems with odd sized output
+ blocks in TIFF_DownSample_Subsampled() (bug 1542).
+
+ 2007-04-06 Frank Warmerdam <warmerdam@pobox.com>
+@@ -865,20 +912,20 @@
+ * libtiff/tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it
+ will convert from decompressor to compressor or compress to decompress
+ if required by the force arguments. This works around a problem in
+- where the JPEGFixupTestSubsampling() may cause a decompressor to
++ where the JPEGFixupTestSubsampling() may cause a decompressor to
+ be setup on a directory when later a compressor is required with the
+- force flag set. Occurs with the addtiffo program for instance.
++ force flag set. Occurs with the addtiffo program for instance.
+
+ 2007-04-06 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * libtiff/tif_dirwrite.c: Fixed swapping of byte arrays stored
+ in-place in tag offsets as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1363
+
+ * tools/tiffcrop.c, man/tiffcrop.1: Significant update in
+ functionality from Richard Nolde. As per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1525
+
+ 2007-03-28 Frank Warmerdam <warmerdam@pobox.com>
+@@ -886,15 +933,15 @@
+ * libtiff/tif_fax3.c: "inline static" -> "static inline" for IRIC CC.
+
+ 2007-03-07 Joris Van Damme <joris.at.lebbeke@skynet.be>
+-
++
+ * libtiff/tif_getimage.c: workaround for 'Fractional scanline' error reading
+ OJPEG images with rowsperstrip that is not a multiple of vertical subsampling
+ factor. This bug is mentioned in:
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1390
+- http://www.asmail.be/msg0054766825.html
++ http://www.asmail.be/msg0054766825.html
+
+ 2007-03-07 Joris Van Damme <joris.at.lebbeke@skynet.be>
+-
++
+ * libtiff/tif_win32.c: made inclusion of windows.h unconditional
+
+ * libtiff/tif_win32.c: replaced preprocessor indication for consiously
+@@ -944,14 +991,14 @@
+ larger than 2GB. Fixes bug
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=890
+-
++
+ Idea submitted by Matt Hancher.
+
+ 2007-01-31 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * tools/tif2rgba.c: This utility does not work properly on big-endian
+ architectures. It was fixed including the bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1149
+
+ 2007-01-15 Mateusz Loskot <mateusz@loskot.net>
+@@ -968,15 +1015,15 @@
+
+ 2006-11-19 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_write.c: TIFFAppendToStrip() - clear sorted flag if
+- we move a strip.
+- http://bugzilla.remotesensing.org/show_bug.cgi?id=1359
++ * libtiff/tif_write.c: TIFFAppendToStrip() - clear sorted flag if
++ we move a strip.
++ http://bugzilla.remotesensing.org/show_bug.cgi?id=1359
+
+ 2006-10-13 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * libtiff/tif_dir.c: More fixes for vulnerabilities, reported
+ in Gentoo bug ():
+-
++
+ http://bugs.gentoo.org/show_bug.cgi?id=142383
+
+ * libtiff/contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable.
+@@ -1010,12 +1057,12 @@
+ * libtiff/tif_lzw.c, libtiff/tif_zip.c: Fixed problems with mixing
+ encoding and decoding on the same read-write TIFF handle. The LZW
+ code can now maintain encode and decode state at the same time. The
+- ZIP code will switch back and forth as needed.
++ ZIP code will switch back and forth as needed.
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=757
+
+ 2006-09-20 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff: Rename config.h.vc and tif_config.h.vc to config.vc.h and
++ * libtiff: Rename config.h.vc and tif_config.h.vc to config.vc.h and
+ tif_config.vc.h for easier identification by folks using an IDE.
+
+ 2006-07-25 Frank Warmerdam <warmerdam@pobox.com>
+@@ -1030,7 +1077,7 @@
+
+ 2006-07-12 Frank Warmerdam <warmerdam@pobox.com>
+
+- * tif_dirwrite.c: make sure to use uint32 for wordcount in
++ * tif_dirwrite.c: make sure to use uint32 for wordcount in
+ TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields.
+ It already seems to have been done for other field types. Needed
+ for "tiffset" on files with geotiff ascii text.
+@@ -1058,9 +1105,9 @@
+ 2006-06-17 Frank Warmerdam <warmerdam@pobox.com>
+
+ * tif_readdir.c: Added case in EstimateStripByteCounts() for tiled
+- files. Modified TIFFReadDirectory() to not invoke
++ files. Modified TIFFReadDirectory() to not invoke
+ EstimateStripByteCounts() for case where entry 0 and 1 are unequal
+- but one of them is zero.
++ but one of them is zero.
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1204
+
+ 2006-06-08 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -1088,7 +1135,7 @@
+ * {configure, configure.ac, libtiff/tif_jbig.c, tools/tiffcp.c}: Added
+ support for JBIG compression scheme (34661 code) contributed by Lee
+ Howard. As per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=896
+
+ * configure, configure.ac: OJPEG support enabled by default.
+@@ -1127,7 +1174,7 @@
+ 2006-04-18 Frank Warmerdam <warmerdam@pobox.com>
+
+ * nmake.opt: use /EHsc for VS2005 compatibility. Also define
+- _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005.
++ _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005.
+
+ 2006-04-12 Joris Van Damme <joris.at.lebbeke@skynet.be>
+
+@@ -1135,7 +1182,7 @@
+ non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1])
+
+ 2006-04-11 Joris Van Damme <joris.at.lebbeke@skynet.be>
+-
++
+ * libtiff/tif_getimage.c: Revision of all RGB(A) put routines
+ - Conversion of unassociated alpha to associated alpha now done with
+ more performant LUT, and calculation more correct
+@@ -1144,21 +1191,21 @@
+ - Bugfix of handling of 16bit RGB with unassociated alpha
+
+ 2006-04-11 Joris Van Damme <joris.at.lebbeke@skynet.be>
+-
+- * libtiff/tif_getimage.c:
+- - When there is no alpha, gtTileSeparate and gtStripSeparate allocated
+- buffer for alpha strile and filled it, only to never read it back.
++
++ * libtiff/tif_getimage.c:
++ - When there is no alpha, gtTileSeparate and gtStripSeparate allocated
++ buffer for alpha strile and filled it, only to never read it back.
+ Removed allocation and fill.
+- - Minor rename of vars in gtTileSeparate and gtStripSeparate
++ - Minor rename of vars in gtTileSeparate and gtStripSeparate
+ anticipating planned functionality extension
+
+ 2006-04-08 Joris Van Damme <joris.at.lebbeke@skynet.be>
+
+- * libtiff/tif_getimage.c: renamed pickTileContigCase to PickContigCase
+- and pickTileSeparateCase to PickSeparateCase as both work on strips as
++ * libtiff/tif_getimage.c: renamed pickTileContigCase to PickContigCase
++ and pickTileSeparateCase to PickSeparateCase as both work on strips as
+ well
+
+- * libtiff/tif_getimage.c: moved img->get selection from
++ * libtiff/tif_getimage.c: moved img->get selection from
+ TIFFRGBAImageBegin into PickContigCase and PickSeparateCase to create
+ logical hook for planned functionality extension
+
+@@ -1169,9 +1216,9 @@
+
+ 2006-04-07 Joris Van Damme <joris.at.lebbeke@skynet.be>
+
+- * libtiff/tif_getimage.c: replaced usage of TIFFScanlineSize in
++ * libtiff/tif_getimage.c: replaced usage of TIFFScanlineSize in
+ gtStripContig with TIFFNewScanlineSize so as to fix buggy behaviour
+- on subsampled images - this ought to get sorted when we feel brave
++ on subsampled images - this ought to get sorted when we feel brave
+ enough to replace TIFFScanlineSize alltogether
+
+ * libtiff/tif_ojpeg.c: fixed bug in OJPEGReadSkip
+@@ -1180,13 +1227,13 @@
+
+ * libtiff/tiffio.h: added new type tstrile_t
+
+- * libtiff/tif_dir.h: changed types of td_stripsperimage and td_nstrips
+- to new tstrile_t, types of td_stripoffset and td_stripbytecount to
++ * libtiff/tif_dir.h: changed types of td_stripsperimage and td_nstrips
++ to new tstrile_t, types of td_stripoffset and td_stripbytecount to
+ toff_t*
+
+ * libtiff/tif_ojpeg.c: totally new implementation
+
+- * libtiff/tif_dirread.c: added several hacks to suit new support of
++ * libtiff/tif_dirread.c: added several hacks to suit new support of
+ OJPEG
+
+ * libtiff/tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling
+@@ -1226,7 +1273,7 @@
+
+ * libtiff/tif_getimage.c: added putcontig8bitYCbCr12tile
+
+- * libtiff/tif_read.c: added support for new TIFF_NOREADRAW flag to
++ * libtiff/tif_read.c: added support for new TIFF_NOREADRAW flag to
+ prepare the path for new tif_ojpeg.c
+
+ 2006-03-23 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -1342,7 +1389,7 @@
+
+ * libtiff/tif_write.c: Small code rearrangement in TIFFWriteScanline()
+ to avoid crash as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1081.
+
+ 2006-02-26 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -1392,7 +1439,7 @@
+ 2006-02-07 Frank Warmerdam <warmerdam@pobox.com>
+
+ * tools/tiff2pdf.c: Fixed support for non-YCbCr encoded JPEG
+- compressed TIFF files, per submission from Dan Cobra.
++ compressed TIFF files, per submission from Dan Cobra.
+
+ 2006-02-07 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -1424,7 +1471,7 @@
+
+ * libtiff/tif_dirread.c: Use _TIFFGetExifFieldInfo() instead of
+ _TIFFGetFieldInfo() in TIFFReadEXIFDirectory() call as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1026.
+
+ 2006-01-23 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -1490,7 +1537,7 @@
+
+ 2005-12-26 Andrey Kiselev <dron@ak4719.spb.edu>
+
+- * libtiff/{tif_dir.c, tif_dir.h, tif_dirread.c, tif_dirinfo.c}:
++ * libtiff/{tif_dir.c, tif_dir.h, tif_dirread.c, tif_dirinfo.c}:
+ tiffFieldInfo and exifFieldInfo arrays definitions moved back to
+ tif_dirinfo.c; added _TIFFGetFieldInfo() and _TIFFGetExifFieldInfo()
+ private functions to retrieve FieldInfo arrays.
+@@ -1517,10 +1564,10 @@
+
+ 2005-12-23 Joris Van Damme <joris.at.lebbeke@skynet.be>
+
+- * libtiff/tiffio.h: fixed typo that potentially resulted in
++ * libtiff/tiffio.h: fixed typo that potentially resulted in
+ redefininition of USE_WIN32_FILEIO
+
+- * libtiff/*: Added more 'dual-mode' error handling: Done TIFFWarning
++ * libtiff/*: Added more 'dual-mode' error handling: Done TIFFWarning
+ calls in core LibTiff.
+
+ 2005-12-21 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -1530,10 +1577,10 @@
+
+ 2005-12-21 Joris Van Damme <joris.at.lebbeke@skynet.be>
+
+- * libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling
++ * libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling
+ newer code to get context indicator in error handler and still
+- remain compatible with older code: Done TIFFError calls everywhere
+- except in tools
++ remain compatible with older code: Done TIFFError calls everywhere
++ except in tools
+
+ 2005-12-20 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -1606,7 +1653,7 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=1002
+
+ * .cvsignore: many files added, and a few update according
+- to suggestion of Brad HArds on tiff mailing list.
++ to suggestion of Brad HArds on tiff mailing list.
+
+ 2005-11-03 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -1631,7 +1678,7 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=946
+
+ * tools/bmp2tiff.c: Fixed possible integer overflow error as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=965
+
+ * libtiff/tif_dirinfo.c: Make XResolution, YResolution and
+@@ -1641,7 +1688,7 @@
+
+ * tools/tiffsplit.c: Copy fax related fields over splitted parts
+ as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=983
+
+ 2005-10-21 Frank Warmerdam <warmerdam@pobox.com>
+@@ -1697,7 +1744,7 @@
+
+ * libtiff/tif_dir.c: When prefreeing tv->value in TIFFSetFieldV
+ also set it to NULL to avoid double free when re-setting custom
+- string fields as per:
++ string fields as per:
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=922
+
+@@ -1733,7 +1780,7 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=831
+
+ Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag()
+- instead.
++ instead.
+
+ * libtiff/tiffconf.h.in: One more attempt to fix the AIX bug
+
+@@ -1904,7 +1951,7 @@
+
+ 2005-05-22 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_dirread.c: Changed the code that computes
++ * libtiff/tif_dirread.c: Changed the code that computes
+ stripbytecount[0] if it appears bogus to ignore if stripoffset[0] is
+ zero. This is a common case with GDAL indicating a "null" tile/strip.
+
+@@ -1914,8 +1961,8 @@
+
+ 2005-05-06 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_dirread.c: Applied similar change to
+- TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys.
++ * libtiff/tif_dirread.c: Applied similar change to
++ TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=843
+
+@@ -1965,7 +2012,7 @@
+
+ * man/TIFFSetField.3tiff: Fixed definition of the TIFFTAG_INKNAMES tag
+ as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=816
+
+ 2005-03-30 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -2075,7 +2122,7 @@
+
+ * libtiff/tiffio.h: Move TIFFOpenW() function into the extern "C"{}
+ block as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=763
+
+ 2005-02-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+@@ -2096,7 +2143,7 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=320
+
+ * tools/tiff2ps.c: Fixed problem with page sizes as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=742
+
+ 2005-01-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+@@ -2137,7 +2184,7 @@
+ TIFFRGBAImageBegin() as per bug
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=739
+-
++
+ 2005-01-12 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * libtiff/tif_jpeg.c: Added ability to read/write the fax specific
+@@ -2166,7 +2213,7 @@
+ * libtiff/tiff.h: Restore back the workaround for AIX Visual Age C
+ compiler to avoid double definition of BSD types as per bug
+
+- http://bugzilla.remotesensing.org/show_bug.cgi?id=39
++ http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+
+ * libtiff/Makefile.am: Place the C++ stream API in the separate
+ library called libtiffxx to avoid unneeded dependencies. Probably
+@@ -2190,7 +2237,7 @@
+
+ * libtiff/tif_getimage.c: More fixes for multiple-alpha-channelled
+ RGB-images as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=713
+
+
+@@ -2226,7 +2273,7 @@
+ 2004-12-15 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_getimage.c: #define A1 bracketing for clean build on
+- SunPro compiler.
++ SunPro compiler.
+
+ 2004-12-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
+
+@@ -2238,7 +2285,7 @@
+
+ * libtiff/tif_dirwrite.c: Always write TIFFTAG_SUBIFD using LONG type
+ as per bugs
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=703
+
+ and
+@@ -2258,9 +2305,9 @@
+
+ * libtiff/tif_config.in.vc: Removed unneded definitions for
+ read/open/close/lseek functions to fix the
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=680
+-
++
+ 2004-12-03 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * libtiff/{tif_dir.c, tif_dirread.c}: Remove TIFFReassignTagToIgnore()
+@@ -2296,7 +2343,7 @@
+
+ 2004-11-26 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/makefile.vc: make it easier to rename the libtiff DLL.
++ * libtiff/makefile.vc: make it easier to rename the libtiff DLL.
+
+ 2004-11-24 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -2393,7 +2440,7 @@
+ per bug
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=648
+-
++
+ * libtiff/{tif_jpeg.c, tif_ojpeg.c}: TIFFTAG_JPEGTABLES should have
+ uint32 count. Use this type everywhere.
+
+@@ -2406,7 +2453,7 @@
+ * tools/tiff2rgba.c: removed extra newlines in usage message.
+
+ 2004-10-30 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * libtiff/tif_dirwrite.c: Improvements in tag writing code.
+
+ * tools/tiff2ps.c: Fixed wrong variable data type when read Position
+@@ -2421,7 +2468,7 @@
+
+ * libtiff/tif_fax3.c: Fixed case with the wrong decode routines
+ choosing when the incorrect Group4Options tag set. As per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=323
+
+ * libtiff/tif_dirwrite.c: Fixed problem with passing count variable of
+@@ -2440,7 +2487,7 @@
+ * tools/tiff2pdf.c: added casts to avoid warnings.
+
+ * libtiff/libtiff.def: Added several more entry points required
+- to link fax2tiff.c against the DLL on windows.
++ to link fax2tiff.c against the DLL on windows.
+
+ 2004-10-27 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -2511,7 +2558,7 @@
+ 2004-10-08 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation
+- of tif_fieldinfo.
++ of tif_fieldinfo.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=630
+
+@@ -2543,7 +2590,7 @@
+
+ 2004-09-30 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_dirinfo.c: changed type of XMLPacket (tag 700) to
++ * libtiff/tif_dirinfo.c: changed type of XMLPacket (tag 700) to
+ TIFFTAG_BYTE instead of TIFFTAG_UNDEFINED to comply with the info
+ in the Adobe XMP Specification.
+
+@@ -2563,7 +2610,7 @@
+ 2004-09-26 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * libtiff/{tif_dir.h, tif_dir.c, tif_dirread.c, tif_write.c}:
+- Optimize checking for the strip bounds.
++ Optimize checking for the strip bounds.
+
+ * libtiff/{tif_dirread.c, tif_strip.c}: TIFFScanlineSize() and
+ TIFFRasterScanlineSize() functions report zero in the case of integer
+@@ -2714,7 +2761,7 @@
+ here
+
+ http://www.asmail.be/msg0054799560.html
+-
++
+ for details.
+
+ * tools/fax2tiff.c: Use the new functions in the code.
+@@ -2842,11 +2889,11 @@
+ * tools/tiffsplit.c: Fixed problem with unproperly written multibyte
+ files. Now output files will be written using the same byte order
+ flag as in the input image. See
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=574
+-
++
+ for details.
+-
++
+ 2004-05-19 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_print.c: added (untested) support for printing
+@@ -2858,7 +2905,7 @@
+
+ * libtiff/tif_fax3.c: Avoid reading CCITT compression options
+ if compression type mismatches. See
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=565
+
+ 2004-04-30 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -2903,7 +2950,7 @@
+ 2004-04-04 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_open.c: close clientdata if TIFFClientOpen() fails
+- via bad2.
++ via bad2.
+
+ 2004-03-26 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -2930,10 +2977,10 @@
+
+ 2004-02-26 Andrey Kiselev <dron@ak4719.spb.edu>
+
+- * tools/tiffsplit.c: Copy JPEGTables tag contents for JPEG compressed
++ * tools/tiffsplit.c: Copy JPEGTables tag contents for JPEG compressed
+ images. Reported by Artem Mirolubov.
+
+- * libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED
++ * libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED
+ tag type in TIFFFetchNormalTag() as per bug
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=508
+@@ -2955,8 +3002,8 @@
+ 2004-01-30 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/libtiff.def: Added TIFFCurrentDirOffset, TIFFWriteCheck,
+- TIFFRGBAImageOK, and TIFFNumberOfDirectories as suggested by
+- Scott Reynolds.
++ TIFFRGBAImageOK, and TIFFNumberOfDirectories as suggested by
++ Scott Reynolds.
+
+ 2004-01-29 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -2974,7 +3021,7 @@
+ file if TIFFFdOpen() failed as per bug
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=468
+-
++
+ * libtiff/tif_open.c: More fixes for
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=468
+@@ -2998,7 +3045,7 @@
+ * libtiff/tif_dirwrite.c: Fixed handling of writable ASCII tags that
+ are field_passcount=TRUE properly. Arguably anonymous custom tags
+ should be declared as passcount=FALSE, but I don't want to change
+- that without a careful review.
++ that without a careful review.
+
+ 2004-01-20 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -3161,8 +3208,8 @@
+
+ 2003-11-17 Frank Warmerdam <warmerdam@pobox.com>
+
+- * tif_dirread.c: do not mark all anonymously defined tags to be
+- IGNOREd.
++ * tif_dirread.c: do not mark all anonymously defined tags to be
++ IGNOREd.
+
+ 2003-11-17 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -3202,15 +3249,15 @@
+
+ 2003-11-09 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_tile.c: remove spurious use of "s" (sample) in the
++ * libtiff/tif_tile.c: remove spurious use of "s" (sample) in the
+ planarconfig_contig case in TIFFComputeTile().
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=387
+
+ 2003-11-09 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * libtiff/tiffiop.h: New macros: TIFFmax, TIFFmin and TIFFrint.
+-
++
+ 2003-11-07 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * libtiff/{tiffio.h, tif_strip.c}, man/{TIFFstrip.3t, libtiff.3t}:
+@@ -3277,11 +3324,11 @@
+ function TIFFReadRGBAImageOriented() implemented to retrieve raster
+ array with user-specified origin position as suggested by Jason Frank.
+ See
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=322
+
+ for details.
+-
++
+ * tools/tiff2rgba.c: Switched to use TIFFReadRGBAImageOriented()
+ instead of TIFFReadRGBAImage().
+
+@@ -3362,9 +3409,9 @@
+ encoded write functions use tif_postdecode() to apply byte order
+ swapping (swab) to the application passed data buffer if the same
+ would be done when reading. This allows us to write pixel data with
+- more than 8 bits per sample to existing files of a non-native byte
++ more than 8 bits per sample to existing files of a non-native byte
+ order. One side effect of this change is the applications buffer
+- itself is altered in this case by the act of writing.
++ itself is altered in this case by the act of writing.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=171
+
+@@ -3390,9 +3437,9 @@
+ 2003-07-08 Frank Warmerdam <warmerdam@pobox.com>
+
+ * tif_aux.c, tif_codec.c, tif_dir.c, tif_dirread.c, tif_extension.c,
+- tif_fax3.c, tif_getimage.c, tif_luv.c, tif_lzw.c, tif_next.c,
++ tif_fax3.c, tif_getimage.c, tif_luv.c, tif_lzw.c, tif_next.c,
+ tif_packbits.c, tif_predict.c, tif_print.c, tif_swab.c, tif_thunder.c:
+- avoid casting warning at /W4.
++ avoid casting warning at /W4.
+
+ 2003-07-03 Andrey Kiselev <dron@ak4719.spb.edu>
+
+@@ -3414,11 +3461,11 @@
+
+ * libtiff/tif_dirinfo.c: TIFFDataWidth() returns 0 in case of
+ unknown data type.
+-
++
+ 2003-06-19 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_print.c: fixed some serious bugs when printing
+- custom tags ... almost certain to crash.
++ custom tags ... almost certain to crash.
+
+ * libtiff/tif_dirread.c: Don't ignore custom fields that are
+ autodefined. Not sure how this got to be like this.
+@@ -3429,12 +3476,12 @@
+
+ * tools/tiffcmp.c, man/tiffcmp.1: Fixed problem with unused data
+ comparing as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=349
+
+ `-z' option now can be used to set the number of reported different
+ bytes.
+-
++
+ 2003-06-09 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * tools/tiffcp.c, man/tiffcp.1: Added possibility to specify value -1
+@@ -3460,7 +3507,7 @@
+ 2003-05-25 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * tools/fax2tiff.c: Page numbering fixed, as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=341
+
+ 2003-05-20 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -3526,7 +3573,7 @@
+
+ * tools/tiffcp.c: Fixed problem with colorspace conversion for JPEG
+ encoded images. See bug entries
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=275
+
+ and
+@@ -3587,16 +3634,16 @@
+
+ * libtiff/tif_jpeg.c: Modified to defer initialization of jpeg
+ library so that we can check if there is already any tile/strip data
+- before deciding between creating a compressor or a decompressor.
++ before deciding between creating a compressor or a decompressor.
+
+ 2003-01-31 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
+- a pre-existing compressed image. That is, image writing to
++ a pre-existing compressed image. That is, image writing to
+ pre-existing compressed images is not allowed.
+
+ * libtiff/tif_open.c: Removed error if opening a compressed file
+- in update mode.
++ in update mode.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=198
+
+@@ -3609,16 +3656,16 @@
+ * cut 3.6.0 Beta release.
+
+ 2002-12-20 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * tools/fax2ps.c, man/fax2ps.1: Page size was determined
+ in wrong way as per bug
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=239
+
+ 2002-12-17 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_dirread.c: Allow wrong sized arrays in
+- TIFFFetchStripThing().
++ * libtiff/tif_dirread.c: Allow wrong sized arrays in
++ TIFFFetchStripThing().
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=49
+
+@@ -3632,7 +3679,7 @@
+ * libtiff/tif_dir.c: fixed bug with resetting an existing custom
+ field value.
+
+- * libtiff/tif_dir.c: Fixed potential problem with ascii "custom"
++ * libtiff/tif_dir.c: Fixed potential problem with ascii "custom"
+ tags in TIFFVGetField() ... added missing break.
+
+ 2002-10-14 Frank Warmerdam <warmerdam@pobox.com>
+@@ -3644,11 +3691,11 @@
+ the eps by redefining the colorimage operator will get messed up.
+ Patch supplied by William Bader.
+
+- * Makefile.in: added tif_extension.c to file list as per
++ * Makefile.in: added tif_extension.c to file list as per
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=218.
+
+ 2002-10-11 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * configure, config.site, libtiff/{tif_unix.c, Makefile.in}: Fix for
+ large files (>2GiB) supporting. New option in the config.site:
+ LARGEFILE="yes". Should be enough for I/O of the large files.
+@@ -3680,13 +3727,13 @@
+ 2002-10-06 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_jpeg.c: fixed problem with boolean defined with wrong
+- size on windows. Use #define boolean hack.
++ size on windows. Use #define boolean hack.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=188
+
+ * libtiff/tiff.h: Don't do special type handling in tiff.h unless
+ USING_VISUALAGE is defined.
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+
+ 2002-10-03 Frank Warmerdam <warmerdam@pobox.com>
+@@ -3697,30 +3744,30 @@
+
+ * libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
+ by the TIFFFetchByteArray() function. Should finally resolve
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=52
+-
++
+ * configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT
+
+ * html/Makefile.in: New targets added: html and groffhtml for
+ producing HTML representations of the manual pages automatically.
+ html target uses man2html tool, groffhtml uses groff tool.
+-
++
+ 2002-09-29 Frank Warmerdam <warmerdam@pobox.com>
+
+ * configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
+- from John H. DuBois III.
++ from John H. DuBois III.
+
+ 2002-09-15 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * Makefile.in, /man/{raw2tiff.1, Makefile.in, libtiff.3}: Added
+ manual page for raw2tiff(1) tool.
+-
++
+ 2002-09-12 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * /libtiff/{tiffio.h, tif_dir.h}: TIFFDataWidth() declaration moved to
+ the tiffio.h header file.
+-
++
+ * Makefile.in, /man/{TIFFDataWidth.3t, Makefile.in, libtiff.3}: Added
+ manual page for TIFFDataWidth() function
+
+@@ -3730,8 +3777,8 @@
+ as per http://bugzilla.remotesensing.org/show_bug.cgi?id=196.
+
+ * tools/tiff2ps.c: Don't emit BeginData/EndData DSC comments
+- since we are unable to properly include the amount to skip.
+-
++ since we are unable to properly include the amount to skip.
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=80
+
+ 2002-09-02 Andrey Kiselev <dron@ak4719.spb.edu>
+@@ -3741,7 +3788,7 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=52
+
+ 2002-08-22 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * /libtiff/tif_dirinfo.c: Further additions to free custom fields
+ in _TIFFSetupFieldInfo() function.
+ See http://bugzilla.remotesensing.org/show_bug.cgi?id=169 for details.
+@@ -3750,14 +3797,14 @@
+ LZWDecode() and LZWDecodeCompat().
+ Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=190
+ and http://bugzilla.remotesensing.org/show_bug.cgi?id=100
+-
++
+ * /libtiff/tif_lzw.c:
+ Added check for valid code lengths in LZWDecode() and
+ LZWDecodeCompat(). Fixes
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=115
+
+ 2002-08-16 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * /libtiff/{Makefile.vc, libtiff.def}:
+ Missed declarations added.
+
+@@ -3768,7 +3815,7 @@
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=177
+
+- * tif_dir.h: changed FIELD_CODEC to 66 from 64 to avoid overlap
++ * tif_dir.h: changed FIELD_CODEC to 66 from 64 to avoid overlap
+ with FIELD_CUSTOM as mentioned in bug 169.
+
+ * tif_close.c: added logic to free dynamically created anonymous
+@@ -3777,31 +3824,31 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=169
+
+ 2002-08-10 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * /tools/{raw2tiff.c, Makefile.in, Makefile.lcc, Makefile.vc}:
+ New tool: raw2tiff --- raw images to TIFF converter. No manual page yet.
+
+ 2002-07-31 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
++ * libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
+ JPEGDecode() as per bugzilla bug (issue 1):
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=129
+
+ * libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
+ fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
+- present in the tiff tags.
++ present in the tiff tags.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=168
+
+ * libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
+ TIFFWriteScanline() now set tif_row explicitly in case the codec has
+- fooled with the value.
++ fooled with the value.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=129
+
+ 2002-06-22 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * /tools/tiff2ps.c: Added workaround for some software that may crash
+ when last strip of image contains fewer number of scanlines than
+ specified by the `/Height' variable. See
+@@ -3817,8 +3864,8 @@
+
+ 2002-06-11 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/contrib/win95: renamed to contrib/win_dib. Added new
+- Tiffile.cpp example of converting TIFF files into a DIB on Win32.
++ * libtiff/contrib/win95: renamed to contrib/win_dib. Added new
++ Tiffile.cpp example of converting TIFF files into a DIB on Win32.
+ This one is described in:
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=143
+@@ -3834,21 +3881,21 @@
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=131
+
+ 2002-04-26 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * libtiff/libtiff.def: Added missed declaration.
+-
++
+ 2002-04-22 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * tools/fax2tiff.c: Updated to reflect latest changes in libtiff.
+ Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=125
+
+ 2002-04-20 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * libtiff/tif_open.c: Pointers to custom procedures
+ in TIFFClientOpen() are checked to be not NULL-pointers.
+-
++
+ 2002-04-18 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * libtiff/libtiff.def: Added missed declarations.
+
+ * libtiff/tif_pixarlog.c: Updated for using tif_tagmethods structure.
+@@ -3858,14 +3905,14 @@
+ * libtiff/tif_lzw.c: Additional checks for data integrity introduced.
+ Should finally close
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=100
+-
++
+ 2002-04-10 Andrey Kiselev <dron@ak4719.spb.edu>
+
+ * tools/tiff2ps: Division by zero fixed.
+ Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=88
+
+ 2002-04-09 Andrey Kiselev <dron@ak4719.spb.edu>
+-
++
+ * libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
+ TIFFCheckpointDirectory() routine added.
+ Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=124
+@@ -3897,7 +3944,7 @@
+ replaced by warnings. Now libtiff should read corrupted LZW-compressed
+ files by skipping bad strips.
+ Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=100
+-
++
+ 2002-04-03 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_dirwrite.c: Removed some dead code.
+@@ -3919,18 +3966,18 @@
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=111
+
+- * tif_print.c: Fixed so that ASCII FIELD_CUSTOM values with
++ * tif_print.c: Fixed so that ASCII FIELD_CUSTOM values with
+ passcount set FALSE can be printed (such as TIFFTAG_SOFTWARE).
+
+- * libtiff/tif_dir.c,tif_dirinfo.c,tif_dir.h,tif_ojpeg.c: modified so
++ * libtiff/tif_dir.c,tif_dirinfo.c,tif_dir.h,tif_ojpeg.c: modified so
+ that TIFFTAG_SOFTWARE uses FIELD_CUSTOM as an example.
+
+ 2002-03-26 Dwight Kelly <dbmalloc@remotesensing.org>
+
+ * libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
+ tif_dirwrite.c: Added get/put code for new tag XMLPACKET as defined
+- in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 spec
+- INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes:
++ in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 spec
++ INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes:
+ CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
+ INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
+
+@@ -3989,7 +4036,7 @@
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=94
+
+- * man/Makefile.in: Patch DESTDIR handling
++ * man/Makefile.in: Patch DESTDIR handling
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=95
+
+@@ -4027,9 +4074,9 @@
+
+ 2002-01-04 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_jpeg.c: fixed computation of segment_width for
+- tiles files to avoid error about it not matching the
+- cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile
++ * libtiff/tif_jpeg.c: fixed computation of segment_width for
++ tiles files to avoid error about it not matching the
++ cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile
+ size.") for ITIFF files. Apparently the problem was incorporated since
+ 3.5.5, presumably during the OJPEG/JPEG work recently.
+
+@@ -4039,7 +4086,7 @@
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=94
+
+- * libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1
++ * libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1
+ (defined in tiffconf.h - 1 by default) then the RGBA interface
+ will assume that a fourth extra sample is ASSOCALPHA if the
+ EXTRASAMPLE value isn't set for it. This changes the behaviour of
+@@ -4051,9 +4098,9 @@
+
+ 2001-12-12 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
+- override those from tiff directory. This makes this work with
+- ImageGear generated files.
++ * libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
++ override those from tiff directory. This makes this work with
++ ImageGear generated files.
+
+ 2001-12-07 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -4066,7 +4113,7 @@
+ * Reissue 3.5.7 release.
+
+ * libtiff/mkversion.c: Fix output of TIFF_VERSION to be
+- YYYYMMDD so that it is increasing over time.
++ YYYYMMDD so that it is increasing over time.
+
+ * Makefile.in: Ensure that tiffvers.h is regenerated in the
+ make release target.
+@@ -4091,8 +4138,8 @@
+
+ 2001-10-10 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tiff.h: I have created COMPRESSION_CCITT_T4,
+- COMPRESSION_CCITT_T6, TIFFTAG_T4OPTIONS and TIFFTAG_T6OPTIONS aliases
++ * libtiff/tiff.h: I have created COMPRESSION_CCITT_T4,
++ COMPRESSION_CCITT_T6, TIFFTAG_T4OPTIONS and TIFFTAG_T6OPTIONS aliases
+ in keeping with TIFF 6.0 standard in tiff.h
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=83
+@@ -4112,10 +4159,10 @@
+ error about LZW not being available.
+
+ * libtiff/tif_dir.c: propagate failure to initialize compression
+- back from TIFFSetField() as an error status, so applications can
++ back from TIFFSetField() as an error status, so applications can
+ detect failure.
+
+- * libtiff/tif_dir.c: removed the auto replacement of
++ * libtiff/tif_dir.c: removed the auto replacement of
+ COMPRESSION_LZW with COMPRESSION_NONE in _TIFFVSetField().
+
+ * Removed Makefile, tools/Makefile, port/install.sh, man/Makefile
+@@ -4123,7 +4170,7 @@
+
+ 2001-09-22 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_ojpeg.c: new update from Scott.
++ * libtiff/tif_ojpeg.c: new update from Scott.
+
+ 2001-09-09 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -4142,7 +4189,7 @@
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=47
+
+- * tools/tiff2ps.c: added OJPEG YCbCr to RGB support.
++ * tools/tiff2ps.c: added OJPEG YCbCr to RGB support.
+
+ * libtiff/tif_ojpeg.c: Applied substantial patch from Scott.
+
+@@ -4151,14 +4198,14 @@
+ * libtiff/tif_packbits.c: fixed memory overrun error.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=77
+-
++
+ 2001-08-31 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_getimage.c: relax handling of contig case where
+ there are extra samples that are supposed to be ignored. This
+- should now work for 8bit greyscale or palletted images.
++ should now work for 8bit greyscale or palletted images.
+
+- http://bugzilla.remotesensing.org/show_bug.cgi?id=75
++ http://bugzilla.remotesensing.org/show_bug.cgi?id=75
+
+ 2001-08-28 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -4171,15 +4218,15 @@
+
+ * libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy()
+ in TIFFReadRGBATile() to avoid issues in cases of overlapping
+- buffers. See Bug 69 in Bugzilla.
++ buffers. See Bug 69 in Bugzilla.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=69
+-
++
+ * tools/tiff2rgba.c: fixed getopt() call so that -b works again.
+
+ 2001-08-09 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__
++ * libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__
+ when checking for 64 bit architectures as per bugzilla bug 67.
+
+ 2001-07-27 Frank Warmerdam <warmerdam@pobox.com>
+@@ -4189,7 +4236,7 @@
+
+ 2001-07-20 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H
++ * libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H
+ has been included.
+
+ 2001-07-19 Frank Warmerdam <warmerdam@pobox.com>
+@@ -4201,11 +4248,11 @@
+
+ * libtiff/tif_ojpeg.c: updates from Scott. Handles colors
+ much better. Now depends on having patched libjpeg as per
+- patch in contrib/ojpeg/*.
++ patch in contrib/ojpeg/*.
+
+ 2001-07-17 Frank Warmerdam <warmerdam@pobox.com>
+
+- * */Makefile.in: added DESTDIR support.
++ * */Makefile.in: added DESTDIR support.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=60
+
+@@ -4213,20 +4260,20 @@
+
+ * configure, libtiff/Makefile.in: applied OpenBSD patches
+ as per:
+-
++
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=61
+
+ 2001-06-28 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/tif_getimage.c: Fixed so that failure is properly
+- reported by gtTileContig, gtStripContig, gtTileSeparate and
++ reported by gtTileContig, gtStripContig, gtTileSeparate and
+ gtStripSeparate.
+
+ See http://bugzilla.remotesensing.org/show_bug.cgi?id=51
+
+- * tiffcmp.c: Fixed multi samples per pixel support for ContigCompare.
++ * tiffcmp.c: Fixed multi samples per pixel support for ContigCompare.
+ Updated bug section of tiffcmp.1 to note tiled file issues.
+-
++
+ See http://bugzilla.remotesensing.org/show_bug.cgi?id=53
+
+ 2001-06-22 Frank Warmerdam <warmerdam@pobox.com>
+@@ -4267,10 +4314,10 @@
+
+ 2001-05-08 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tif_dirinfo.c: moved pixar and copyright flags to
++ * libtiff/tif_dirinfo.c: moved pixar and copyright flags to
+ ensure everything is in order.
+
+- * libtiff/libtiff.def: added TIFFCreateDirectory and
++ * libtiff/libtiff.def: added TIFFCreateDirectory and
+ TIFFDefaultStripSize as per:
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=46
+@@ -4279,10 +4326,10 @@
+
+ * libtiff/tif_dirinfo.c: Modified the TIFF_BYTE definition for
+ TIFFTAG_PHOTOSHOP to use a writecount of TIFF_VARIABLE2 (-3) to
+- force use of uint32 counts instead of short counts.
++ force use of uint32 counts instead of short counts.
+
+ * libtiff/tif_dirwrite.c: Added support for TIFF_VARIABLE2 in the
+- case of writing TIFF_BYTE/TIFF_SBYTE fields.
++ case of writing TIFF_BYTE/TIFF_SBYTE fields.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=43
+
+@@ -4318,20 +4365,20 @@
+ with the inttypes.h include file on AIX.
+
+ See http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+-
++
+ * VERSION: update to 3.5.7 beta in preparation for release.
+
+ * configure/config.site: modified to check if -lm is needed for
+ MACHDEPLIBS if not supplied by config.site. Needed for Darwin.
+
+- * config.guess: updated wholesale to an FSF version apparently
+- from 1998 (as opposed to 1994). This is mainly inspired by
++ * config.guess: updated wholesale to an FSF version apparently
++ from 1998 (as opposed to 1994). This is mainly inspired by
+ providing for MacOS X support.
+
+ 2001-03-29 Frank Warmerdam <warmerdam@pobox.com>
+
+ * configure, Makefile.in, etc: added support for OPTIMIZER being
+- set from config.site.
++ set from config.site.
+
+ 2001-03-28 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -4350,7 +4397,7 @@
+ (in particular short ones) print properly.
+
+ See http://bugzilla.remotesensing.org/show_bug.cgi?id=35
+-
++
+ * tiff2ps.c/tiff2ps.1: Substantial changes to tiff2ps by
+ Bruce A. Mallett. See check message for detailed information
+ on all the changes, including a faster encoder, fixes for level
+@@ -4358,7 +4405,7 @@
+
+ 2001-03-27 Frank Warmerdam <warmerdam@pobox.com>
+
+- * libtiff/tiffio.h: Changed "#if LOGLUV_PUBLIC" to
++ * libtiff/tiffio.h: Changed "#if LOGLUV_PUBLIC" to
+ "#ifdef LOGLUV_PUBLIC" so it will work with VisualAge on AIX.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=39
+@@ -4370,7 +4417,7 @@
+
+ 2001-03-13 Frank Warmerdam <warmerdam@pobox.com>
+
+- * tif_getimage.c: Added support for 16bit minisblack/miniswhite
++ * tif_getimage.c: Added support for 16bit minisblack/miniswhite
+ images in RGBA interface.
+
+ 2001-03-02 Frank Warmerdam <warmerdam@pobox.com>
+@@ -4381,29 +4428,29 @@
+
+ * Brent Roman contributed updated tiffcp utility (and tiffcp.1)
+ with support for extracting subimages with the ,n syntax, and also
+- adding the -b bias removal flag.
++ adding the -b bias removal flag.
+
+ 2001-02-16 Frank Warmerdam <warmerdam@pobox.com>
+
+ * libtiff/libtiff.def: Brent Roman submitted new version adding
+- serveral missing entry points.
++ serveral missing entry points.
+
+ * libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS.
+- Some sort of weird VMS thing.
++ Some sort of weird VMS thing.
+
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=31
+
+- * tif_luv.c/tiff.h/tiffio.h:
+- New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward
++ * tif_luv.c/tiff.h/tiffio.h:
++ New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward
+ (greg@shutterfly.com). He writes:
+
+ 1) I improved the gamut-mapping function in tif_luv.c for imaginary
+- colors, because some images were being super-saturated on the input
++ colors, because some images were being super-saturated on the input
+ side and this resulted in some strange color shifts in the output.
+
+ 2) I added a psuedotag in tiff.h to control random dithering during
+- LogLuv encoding. This is turned off by default for 32-bit LogLuv and
+- on for 24-bit LogLuv output. Dithering improves the average color
++ LogLuv encoding. This is turned off by default for 32-bit LogLuv and
++ on for 24-bit LogLuv output. Dithering improves the average color
+ accuracy over the image.
+
+ 3) I added a #define for LOG_LUV_PUBLIC, which is enabled by default in
+@@ -4416,20 +4463,20 @@
+ 2001-01-23 Frank Warmerdam <warmerdam@pobox.com>
+
+ * tif_fax3.c: keep rw_mode flag internal to fax3 state to remember
+- whether we are encoding or decoding. This is to ensure graceful
++ whether we are encoding or decoding. This is to ensure graceful
+ recovery if TIFFClientOpen() discovers an attempt to open a compressed
+- file for "r+" access, and subsequently close it, as it resets the
++ file for "r+" access, and subsequently close it, as it resets the
+ tif_mode flag to O_RDONLY in this case to avoid writes, confusing the
+ compressor's concept of whether it is in encode or decode mode.
+
+-2001-01-08 Mike Welles <mike@bangstate.com>
++2001-01-08 Mike Welles <mike@bangstate.com>
+
+ * Makefile.in: Now cleaning up after itself after creating the .tar.gz and .zip
+-
++
+ 2001-01-07 Frank Warmerdam <warmerdam@pobox.com>
+
+ * html/libtiff.html: Fixed arguments in example for TIFFRGBAImageGet()
+- as per bug report by Patrick Connor.
++ as per bug report by Patrick Connor.
+
+ 2000-12-28 Frank Warmerdam <warmerdam@pobox.com>
+
+@@ -4437,12 +4484,12 @@
+
+ * Fixed libtiff/makefile.vc to make tiffvers.h not version.h.
+
+-2000-12-22 Mike Welles <mike@bangstate.com>
++2000-12-22 Mike Welles <mike@bangstate.com>
+ * added link to CVS mirror from index.html
+-
+- * updated html/internals.html to note that LZW compression is
+- not supported by default.
+-
++
++ * updated html/internals.html to note that LZW compression is
++ not supported by default.
++
+ 2000-12-22 Frank Warmerdam <warmerdam@pobox.com>
+
+ * updated html/libtiff.html to not point at Niles' old JPL web site
+@@ -4454,19 +4501,19 @@
+ Leonard Rosenthol <leonardr@lazerware.com>. May interfere
+ with correct building on older systems. If so, please let me know.
+
+-2000-12-19 Mike Welles <mike@bangsate.com>
++2000-12-19 Mike Welles <mike@bangsate.com>
+
+- * Took out LZW Encoding from tif_lzw.c
++ * Took out LZW Encoding from tif_lzw.c
+
+ * Created HOWTO-RELEASE
+
+ * Created html/v3.5.6.html
+
+ * updated index.html
+-
++
+ 2000-12-01 Frank Warmerdam <warmerdam@pobox.com>
+
+- * Added patches for EOFB support in tif_fax3.c and tif_fax3.h.
++ * Added patches for EOFB support in tif_fax3.c and tif_fax3.h.
+ Patches supplied by Frank Cringle <fdc@cliwe.ping.de>
+ Example file at: ftp://ftp.remotesensing.org/pub/libtiff/eofb_396.tif
+
+@@ -4480,30 +4527,30 @@
+ targets so libtiff.so will be built with an explicit dependency
+ on libm.so.
+
+- * libtiff/Makefile.in: Use softlinks to link libtiff.so.3 to
+- libtiff.so.3.5.5.
++ * libtiff/Makefile.in: Use softlinks to link libtiff.so.3 to
++ libtiff.so.3.5.5.
+
+- * libtiff/Makefile.in & configure: Remove all references to the ALPHA
+- file, or ALPHA version logic. Added stuff about DIST_POINT in
++ * libtiff/Makefile.in & configure: Remove all references to the ALPHA
++ file, or ALPHA version logic. Added stuff about DIST_POINT in
+ place of DIST_TYPE and the alpha release number stuff.
+
+ 2000-11-22 Frank Warmerdam <warmerdam@pobox.com>
+
+ * I have applied a patch from Steffen Moeller <moeller@ebi.ac.uk> to
+- the configure script so that it now accepts the --prefix, and
+- --exec-prefix directives.
++ the configure script so that it now accepts the --prefix, and
++ --exec-prefix directives.
+
+ 2000-11-13 Frank Warmerdam <warmerda@cs46980-c>
+
+- * I have made a variety of modifications in an effort to ensure the
++ * I have made a variety of modifications in an effort to ensure the
+ TIFFLIB_VERSION macro is automatically generated from the RELEASE-DATE
+- file which seems to be updated regularly.
++ file which seems to be updated regularly.
+
+- o mkversion.c now reads RELEASE-DATE and emits TIFFLIB_VERSION in
+- version include file.
+- o renamed version.h to tiffvers.h because we now have to install it
+- with the public libtiff include files.
+- o include tiffvers.h in tiffio.h.
++ o mkversion.c now reads RELEASE-DATE and emits TIFFLIB_VERSION in
++ version include file.
++ o renamed version.h to tiffvers.h because we now have to install it
++ with the public libtiff include files.
++ o include tiffvers.h in tiffio.h.
+ o updated tif_version.c to use tiffvers.h.
+ o Updated Makefile.in accordingly.
+
+@@ -4517,13 +4564,13 @@
+ See http://bugzilla.remotesensing.org/show_bug.cgi?id=20
+ Some patches from Rick LaMont of Dot C Software.
+
+- * Modified tif_packbits.c encoder to avoid compressing more
++ * Modified tif_packbits.c encoder to avoid compressing more
+ data than provided if rowsize doesn't factor into provided data
+ (such as occurs for YCbCr).
+
+ 2000-10-19 Frank Warmerdam <warmerda@cs46980-c>
+
+- * tools/rgb2ycbcr.c: fixed output strip size to account for vertical
++ * tools/rgb2ycbcr.c: fixed output strip size to account for vertical
+ roundup if rows_per_strip not a multiple of vertical sample size.
+
+ 2000-10-16 Frank Warmerdam <warmerda@cs46980-c>
+@@ -4539,8 +4586,8 @@
+ 2000-10-12 Frank Warmerdam <warmerda@cs46980-c>
+
+ * Modified tiff2bw to ensure portions add to 100%, and that
+- white is properly recovered.
+-
++ white is properly recovered.
++
+ See bug http://bugzilla.remotesensing.org/show_bug.cgi?id=15
+ Patch c/o Stanislav Brabec <utx@penguin.cz>
+
+@@ -4554,26 +4601,26 @@
+
+ 2000-09-27 Frank Warmerdam <warmerda@cs46980-c>
+
+- * Added GNULDdso target an`d switched linux and freebsd to use it.
++ * Added GNULDdso target an`d switched linux and freebsd to use it.
+
+ 2000-09-26 Frank Warmerdam <warmerda@cs46980-c>
+
+ * Applied patch for 0x0000 sequences in tif_fax3.h's definition
+- of EXPAND1D() as per bug 11 (from Roman).
++ of EXPAND1D() as per bug 11 (from Roman).
+
+ 2000-09-25 Frank Warmerdam <warmerda@cs46980-c>
+ * Fixed tiffcomp.h to avoid win32 stuff if unix #defined, to improve
+ cygwin compatibility.
+
+ * Applied patch from Roman Shpount to tif_fax3.c. This seems to
+- be a proper fix to the buffer sizing problem. See
++ be a proper fix to the buffer sizing problem. See
+ http://bugzilla.remotesensing.org/show_bug.cgi?id=11
+
+ * Fixed tif_getimage.c to fix overrun bug with YCbCr images without
+ downsampling. http://bugzilla.remotesensing.org/show_bug.cgi?id=10
+ Thanks to Nick Lamb <njl98r@ecs.soton.ac.uk> for reporting the
+ bug and proving the patch.
+-
++
+ 2000-09-18 Frank Warmerdam <warmerda@cs46980-c>
+
+ * Fixed tif_jpeg.c so avoid destroying the decompressor before
+@@ -4603,15 +4650,15 @@
+ * Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and
+ SAMPLEFORMAT_COMPLEXINT.
+
+-2000-07-13 Mike Welles <mike@onshore.com>
++2000-07-13 Mike Welles <mike@onshore.com>
++
++ * index.html, bugs.html: added bugzilla info.
+
+- * index.html, bugs.html: added bugzilla info.
+-
+ 2000-07-12 Frank Warmerdam <warmerda@rommel.atlsci.com>
+
+ * tif_read.c: fix subtle bug with determining the number of
+ rows for strips that are the last strip in a separation but
+- not the last strip of all in TIFFReadEncodedStrip().
++ not the last strip of all in TIFFReadEncodedStrip().
+
+ * Applied 16/32 bit fix to tif_fax3.c. Fix supplied by
+ Peter Skarpetis <peters@serendipity-software.com.au>
+@@ -4633,7 +4680,7 @@
+
+ * libtiff/tif_dirread.c: Don't use estimate strip byte count for
+ one tile/strip images with an offset, and byte count of zero. These
+- could be "unpopulated" images.
++ could be "unpopulated" images.
+
+ 2000-04-18 Frank Warmerdam <warmerda@rommel.atlsci.com>
+
+@@ -4648,17 +4695,17 @@ Tue Apr 18 16:18:08 2000 Frank Warmerdam <warmerda@esabot.atlsci.com>
+ 2000-04-12 Mike Welles <mike@onshore.com>
+ * configure: Fixed stupid mistake in libc6 test on Linux
+
+-2000-04-04 Mike Welles <mike@onshore.com>
++2000-04-04 Mike Welles <mike@onshore.com>
+ * tif_win32.c: Applied patch to fix overreads and ovverwrites
+- caught by BoundsChecker. From Arvan Pritchard
+- <arvan.pritchard@infomatix.co.uk> (untested).
+-
+- * tif_getimage.c: Applied patch to silence VC6 warnings. From
++ caught by BoundsChecker. From Arvan Pritchard
++ <arvan.pritchard@infomatix.co.uk> (untested).
++
++ * tif_getimage.c: Applied patch to silence VC6 warnings. From
+ Arvan Pritchard <arvan.pritchard@informatix.co.uk>
+-
+- * tif_lzw.c: Applied patch to silence VC6 warnings. From
++
++ * tif_lzw.c: Applied patch to silence VC6 warnings. From
+ Arvan Pritchard <arvan.pritchard@informatix.co.uk>
+-
++
+ 2000-03-28 Frank Warmerdam <warmerda@cs46980-c>
+
+ * Added contrib/stream (stream io) code submitted by Avi Bleiweiss.
+@@ -4668,34 +4715,34 @@ Tue Apr 18 16:18:08 2000 Frank Warmerdam <warmerda@esabot.atlsci.com>
+ * fax2ps: Fixed mixup of width and height in bounding box statement
+ as per submission by Nalin Dahyabhai <nalin@redhat.com>.
+
+-2000-03-27 Mike Welles <mike@onshore.com>
++2000-03-27 Mike Welles <mike@onshore.com>
+
+- * fax2ps: Modified printruns to take uint32 instead of uint16.
+- Patch courtesy of Bernt Herd <herd@herdsoft.com>
+-
+-2000-03-20 Mike Welles <mike@onshore.com>
++ * fax2ps: Modified printruns to take uint32 instead of uint16.
++ Patch courtesy of Bernt Herd <herd@herdsoft.com>
+
+- * configure: added test for libc6 for linux targets. Bug reported by
++2000-03-20 Mike Welles <mike@onshore.com>
++
++ * configure: added test for libc6 for linux targets. Bug reported by
+ Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+- * Added 3.5 docs to html/Makefile.in.
++ * Added 3.5 docs to html/Makefile.in.
+ Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+- * configure: fixed bugs in sed scripts
+- (applied sed script s:/@:s;@:;s:/s;;:;: to configure).
++ * configure: fixed bugs in sed scripts
++ (applied sed script s:/@:s;@:;s:/s;;:;: to configure).
+ fix submitted to Stanislav Brabec <utx@k332.feld.cvut.cz>
+
+- * tools/iptcutil was not in files list, and wasn't being
++ * tools/iptcutil was not in files list, and wasn't being
+ added to tar archive. Updated Makefile.in.
+
+ 2000-03-17 Frank Warmerdam <warmerda@cs46980-c>
+
+ * tif_fax3.c: Fixed serious bug introduced during the uint16->uint32
+- conversion for the run arrays.
++ conversion for the run arrays.
+
+ 2000-03-03 Frank Warmerdam <warmerda@cs46980-c.mtnk1.on.wave.home.com>
+
+- * Set td_sampleformat default to SAMPLEFORMAT_UINT instead of
++ * Set td_sampleformat default to SAMPLEFORMAT_UINT instead of
+ SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c.
+
+ 2000-03-02 Frank Warmerdam <warmerda@cs46980-c.mtnk1.on.wave.home.com>
+@@ -4716,20 +4763,20 @@ Tue Feb 15 22:01:05 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
+ set to 1, and added default (off) setting in tiffconf.h. This
+ should eventually be set by the configure script somehow.
+
+- The original work on all these 2-4GB changes was done by
++ The original work on all these 2-4GB changes was done by
+ Peter Smith (psmith@creo.com).
+
+ * Modified tif_win32.c to support 2-4GB seeks.
+
+ * tentatively changed toff_t to be unsigned instead of signed to
+- facilitate support for 2-4GB files.
++ facilitate support for 2-4GB files.
+
+ * Updated a variety of files to use toff_t. Fixed some mixups
+ between toff_t and tsize_t.
+
+ Fri Jan 28 10:13:49 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * Largely reimplemented contrib/addtiffo to avoid temp files,
++ * Largely reimplemented contrib/addtiffo to avoid temp files,
+ updating the TIFF file in place. Fixed a few other bugs to.
+
+ * Set tif_rawdatasize to zero when freeing raw data buffer in
+@@ -4738,7 +4785,7 @@ Fri Jan 28 10:13:49 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
+ * Enabled "REWRITE_HACK" in tif_write.c by default.
+
+ * Fix bug in tif_write.c when switching between reading one directory
+- and writing to another.
++ and writing to another.
+
+ * Made TIFFWriteCheck() public, and added TIFFCreateDirectory()
+
+@@ -4750,41 +4797,41 @@ Tue Jan 4 13:39:00 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ * Added libtiff/libtiff.def to TIFFILES distribution list.
+
+-Mon Dec 27 12:13:39 EST 1999 Mike Welles <mike@onshore.com>
++Mon Dec 27 12:13:39 EST 1999 Mike Welles <mike@onshore.com>
+
+- * Created lzw compression kit, as a new module (libtiff-lzw-compression-kit).
++ * Created lzw compression kit, as a new module (libtiff-lzw-compression-kit).
+
+ * Altered descriptions in tools to reflect "by default" lzw not supported
+
+- * Updated index.html to note lzw compression kit.
+-
++ * Updated index.html to note lzw compression kit.
++
+ Tue Dec 21 14:01:51 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * Added fax3sm_winnt.c to distribution list in Makefile.in.
++ * Added fax3sm_winnt.c to distribution list in Makefile.in.
+
+ Tue Dec 21 11:04:45 EST 1999 Mike Welles <mike@onshore.com> *** 3.5.4 release ***
+-
+- * Aadded Pixar tag support. Contributed by Phil Beffery <phil@pixar.com>
+
+- * Made one more change to tif_dir.c for removal of LZW compression. Also added notice
+- when LZW compression invoked.
++ * Aadded Pixar tag support. Contributed by Phil Beffery <phil@pixar.com>
++
++ * Made one more change to tif_dir.c for removal of LZW compression. Also added notice
++ when LZW compression invoked.
+
+ * Changed default compression in tools to TIFF_PACKBITS, and changed usage descriptions
+ in tools to reflect removal of LZW compression
+-
++
+ Mon Dec 20 18:39:02 EST 1999 Mike Welles <mike@onshore.com>
+
+- * Fixed bug that caused LZW (non) compression to segfault. Added
+- warning about LZW compression removed being removed, and why.
++ * Fixed bug that caused LZW (non) compression to segfault. Added
++ warning about LZW compression removed being removed, and why.
++
++ * Added nostrip to install in tools/Makefile.in so that debugging
++ symbols are kept.
+
+- * Added nostrip to install in tools/Makefile.in so that debugging
+- symbols are kept.
+-
+ Tue Dec 7 12:04:47 EST 1999 Mike Welles <mike@onshore.com>
+
+- * Added patch from Ivo Penzar <ivo.penzar@infolink-software.com>,
+- supporting Adobe ZIP deflate. Untested.
+-
++ * Added patch from Ivo Penzar <ivo.penzar@infolink-software.com>,
++ supporting Adobe ZIP deflate. Untested.
++
+ Sat Dec 4 15:47:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ * Made Packbits the default compression in tools/tiff2rgba.c instead
+@@ -4794,12 +4841,12 @@ Tue Nov 30 14:41:43 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> *** 3.5
+
+ * Added tif_luv to contrib/djgpp/Makefile.lib.
+
+-Tue Nov 30 14:15:32 EST 1999 Mike Welles <mike@onshore.com>
++Tue Nov 30 14:15:32 EST 1999 Mike Welles <mike@onshore.com>
++
++ * Added zip creation to relase makefile target
+
+- * Added zip creation to relase makefile target
++ * Added html for TIFFWriteTile.3t man page.
+
+- * Added html for TIFFWriteTile.3t man page.
+-
+ Tue Nov 30 09:20:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ * Added some changes to tif_write.c to support rewriting existing
+@@ -4812,26 +4859,26 @@ Mon Nov 29 11:43:42 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ Sun Nov 28 20:36:18 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * Added notes on use of makefile.vc in build.html, and fixed
++ * Added notes on use of makefile.vc in build.html, and fixed
+ email subscription address.
+
+-199-11-28 Mike Welles <mike@onshore.com>
++1999-11-28 Mike Welles <mike@onshore.com>
+
+- * Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
++ * Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
+
+ * Did some casts cleaning up to reduce compiler warnings in tif_fax3.c,
+- from Bruce Carmeron <cameron@petris.com> -- modifications of
+- changes made by Frank (sun cc still complained on cast).
++ from Bruce Carmeron <cameron@petris.com> -- modifications of
++ changes made by Frank (sun cc still complained on cast).
+
+ * Added tiffconf.h to install target per request from Bill
+ Radcliffe <billr@corbis.com>: "We need a way for ImageMagick to
+ know features have been compiled into the TIFF library in order to
+- handle things properly".
+-
++ handle things properly".
++
+ Sat Nov 27 16:49:21 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ * fixed various VC++ warnings as suggested by Gilles Vollant
+- <info@winimage.com>.
++ <info@winimage.com>.
+
+ Wed Nov 24 12:08:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+@@ -4840,59 +4887,59 @@ Wed Nov 24 12:08:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ 1999-11-22 Mike Welles <mike@onshore.com>
+ * HTML-ized the man pages, added to html/man
+-
+- * Removed LZW Compression to comply with Unisys patent extortion.
+-
+-1999-09-29 Mike Welles <mike@onshore.com>
+- * Corrected one remaining 16 -> 32 bit value in tif_fax3.c,
+- From Ivo Penzar <ivo.penzar@infolink-software.com.
++
++ * Removed LZW Compression to comply with Unisys patent extortion.
++
++1999-09-29 Mike Welles <mike@onshore.com>
++ * Corrected one remaining 16 -> 32 bit value in tif_fax3.c,
++ From Ivo Penzar <ivo.penzar@infolink-software.com.
+
+ * Added patch from Ivo Penzar to have TiffAdvanceDirectory handle
+ memory mapped files. <ivo.penzar@infolink-software.com>
+-
++
+ 1999-09-26 Mike Welles <mike@onshore.com> *** 3.5.2 release ***
+- * Corrected alpha versioning.
++ * Corrected alpha versioning.
+
+- * Removed distinction between alpha and release targets in Makefile.in.
++ * Removed distinction between alpha and release targets in Makefile.in.
+
+- * added release.stamp target, which tags cvs tree, and updates
++ * added release.stamp target, which tags cvs tree, and updates
+ "RELEASE-DATE"
+
+- * added releasediff target, which diffs tree with source as of
++ * added releasediff target, which diffs tree with source as of
+ date in "RELEASE-DATE"
+-
+- * Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving
+- away from alpha/non-alpha distinctions).
+
+- * updated html to reflect release
+-
++ * Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving
++ away from alpha/non-alpha distinctions).
++
++ * updated html to reflect release
++
+ 1999-09-23 <warmerda@CS46980-B>
+
+ * Set O_BINARY for tif_unix.c open() ... used on cygwin for instance.
+
+ * Added CYGWIN case in configure.
+
+-Fri Sep 17 00:13:51 CEST 1999 Mike Welles <mike@onshore.com>
++Fri Sep 17 00:13:51 CEST 1999 Mike Welles <mike@onshore.com>
++
++ * Applied Francois Dagand's patch to handle fax decompression bug.
++ (sizes >= 65536 were failing)
+
+- * Applied Francois Dagand's patch to handle fax decompression bug.
+- (sizes >= 65536 were failing)
+-
+ Tue Sep 14 21:31:43 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested
++ * Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested
+ by Christopher Lawton <clawton@mathworks.com>
+
+ Wed Sep 8 08:19:18 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * Added IRIX/gcc, and OSF/1 4.x support on behalf of
++ * Added IRIX/gcc, and OSF/1 4.x support on behalf of
+ Albert Chin-A-Young <china@thewrittenword.com>
+
+- * Added TIFFReassignTagToIgnore() API on behalf of
++ * Added TIFFReassignTagToIgnore() API on behalf of
+ Bruce Cameron <cameron@petris.com>. Man page still pending.
+
+ Wed Aug 25 11:39:07 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * Added test target in Makefile, test_pics.sh script and pics/*.rpt
++ * Added test target in Makefile, test_pics.sh script and pics/*.rpt
+ files to provide for a rudimentary testsuite.
+
+ * Added contrib/tags back from old distribution ... fixed up a bit.
+@@ -4900,7 +4947,7 @@ Wed Aug 25 11:39:07 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+ 1999-08-16 <warmerda@CS46980-B>
+
+ * Added simple makefile.vc makefiles for building with MS VC++
+- on Windows NT/98/95 in console mode. Stuff in contrib/win* make give
++ on Windows NT/98/95 in console mode. Stuff in contrib/win* make give
+ better solutions for some users.
+
+ Mon Aug 16 21:52:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+@@ -4910,20 +4957,20 @@ Mon Aug 16 21:52:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+ 1999-08-16 Michael L. Welles <mike@kurtz.fake>
+
+- * Updated html/index.html with anon CVS instructions.
++ * Updated html/index.html with anon CVS instructions.
+
+ Mon Aug 16 13:18:41 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
+
+- * pre-remove so link before softlink in LINUXdso action in
++ * pre-remove so link before softlink in LINUXdso action in
+ libtiff/Makefile.in to avoid failure on LINUXdso builds other than
+ the first.
+
+ * Fixed problem with cvtcmap() in tif_getimage.c modifying the
+ colormaps owned by the TIFF handle itself when trying to fixup wrong
+ (eight bit) colormaps. Corrected by maintaining a private copy of
+- the colormap.
++ the colormap.
+
+- * Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in
++ * Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in
+ tif_getimage.c.
+
+ * CVS Repository placed at remotesensing.org. ChangeLog added.
+diff --git a/Makefile.in b/Makefile.in
+index 72fbbf3..2ed5682 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/aclocal.m4 b/aclocal.m4
+index d7d14c8..9293eda 100644
+--- a/aclocal.m4
++++ b/aclocal.m4
+@@ -1,4 +1,4 @@
+-# generated automatically by aclocal 1.12.4 -*- Autoconf -*-
++# generated automatically by aclocal 1.12.5 -*- Autoconf -*-
+
+ # Copyright (C) 1996-2012 Free Software Foundation, Inc.
+
+@@ -34,7 +34,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION],
+ [am__api_version='1.12'
+ dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
+ dnl require some minimum version. Point them to the right macro.
+-m4_if([$1], [1.12.4], [],
++m4_if([$1], [1.12.5], [],
+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
+ ])
+
+@@ -50,7 +50,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
+ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
+ # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
+ AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+-[AM_AUTOMAKE_VERSION([1.12.4])dnl
++[AM_AUTOMAKE_VERSION([1.12.5])dnl
+ m4_ifndef([AC_AUTOCONF_VERSION],
+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
+ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
+diff --git a/build/Makefile.in b/build/Makefile.in
+index 1a316b1..cea7a08 100644
+--- a/build/Makefile.in
++++ b/build/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/Makefile.in b/contrib/Makefile.in
+index ae67554..72be7a3 100644
+--- a/contrib/Makefile.in
++++ b/contrib/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/acorn/Makefile.in b/contrib/acorn/Makefile.in
+index 1e966b4..5a73941 100644
+--- a/contrib/acorn/Makefile.in
++++ b/contrib/acorn/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/addtiffo/Makefile.in b/contrib/addtiffo/Makefile.in
+index 25a6e8b..e07640c 100644
+--- a/contrib/addtiffo/Makefile.in
++++ b/contrib/addtiffo/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/dbs/Makefile.in b/contrib/dbs/Makefile.in
+index f5b3ee5..d5e7b40 100644
+--- a/contrib/dbs/Makefile.in
++++ b/contrib/dbs/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/dbs/xtiff/Makefile.in b/contrib/dbs/xtiff/Makefile.in
+index 2d1ce94..c655c54 100644
+--- a/contrib/dbs/xtiff/Makefile.in
++++ b/contrib/dbs/xtiff/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/dbs/xtiff/xtiff.c b/contrib/dbs/xtiff/xtiff.c
+index 7fe3977..de0b2a7 100644
+--- a/contrib/dbs/xtiff/xtiff.c
++++ b/contrib/dbs/xtiff/xtiff.c
+@@ -1,5 +1,5 @@
+ /*
+- * $Id: xtiff.c,v 1.2.2.1 2010-06-08 18:50:40 bfriesen Exp $
++ * $Id: xtiff.c,v 1.2.2.2 2013-05-02 14:44:43 tgl Exp $
+ *
+ * xtiff - view a TIFF file in an X window
+ *
+@@ -512,9 +512,9 @@ SetNameLabel()
+ Arg args[1];
+
+ if (tfMultiPage)
+- sprintf(buffer, "%s - page %d", fileName, tfDirectory);
++ snprintf(buffer, sizeof(buffer), "%s - page %d", fileName, tfDirectory);
+ else
+- strcpy(buffer, fileName);
++ snprintf(buffer, sizeof(buffer), "%s", fileName);
+ XtSetArg(args[0], XtNlabel, buffer);
+ XtSetValues(labelWidget, args, 1);
+ }
+diff --git a/contrib/iptcutil/Makefile.in b/contrib/iptcutil/Makefile.in
+index 75b1ca3..5858c03 100644
+--- a/contrib/iptcutil/Makefile.in
++++ b/contrib/iptcutil/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/mac-cw/Makefile.in b/contrib/mac-cw/Makefile.in
+index a94a33a..054d44e 100644
+--- a/contrib/mac-cw/Makefile.in
++++ b/contrib/mac-cw/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/mac-mpw/Makefile.in b/contrib/mac-mpw/Makefile.in
+index 8fdaae1..7dd27d7 100644
+--- a/contrib/mac-mpw/Makefile.in
++++ b/contrib/mac-mpw/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/mfs/Makefile.in b/contrib/mfs/Makefile.in
+index 230c925..4ee41af 100644
+--- a/contrib/mfs/Makefile.in
++++ b/contrib/mfs/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/pds/Makefile.in b/contrib/pds/Makefile.in
+index 3511f62..fa0bcf7 100644
+--- a/contrib/pds/Makefile.in
++++ b/contrib/pds/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/ras/Makefile.in b/contrib/ras/Makefile.in
+index 88907bf..e33a00f 100644
+--- a/contrib/ras/Makefile.in
++++ b/contrib/ras/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/stream/Makefile.in b/contrib/stream/Makefile.in
+index 9c9dffb..1c36a7f 100644
+--- a/contrib/stream/Makefile.in
++++ b/contrib/stream/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/tags/Makefile.in b/contrib/tags/Makefile.in
+index e378f32..891d565 100644
+--- a/contrib/tags/Makefile.in
++++ b/contrib/tags/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/contrib/win_dib/Makefile.in b/contrib/win_dib/Makefile.in
+index 0f68e76..45bf928 100644
+--- a/contrib/win_dib/Makefile.in
++++ b/contrib/win_dib/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/html/Makefile.in b/html/Makefile.in
+index b9f86c8..a85ebd6 100644
+--- a/html/Makefile.in
++++ b/html/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/html/images/Makefile.in b/html/images/Makefile.in
+index 1b96240..eaf50a3 100644
+--- a/html/images/Makefile.in
++++ b/html/images/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/html/man/Makefile.in b/html/man/Makefile.in
+index 3a5278e..98226c3 100644
+--- a/html/man/Makefile.in
++++ b/html/man/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/libtiff/Makefile.in b/libtiff/Makefile.in
+index 6a7c415..69e59c7 100644
+--- a/libtiff/Makefile.in
++++ b/libtiff/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/libtiff/tif_codec.c b/libtiff/tif_codec.c
+index d5c6fd1..5a38184 100644
+--- a/libtiff/tif_codec.c
++++ b/libtiff/tif_codec.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_codec.c,v 1.10.2.2 2010-06-08 18:50:41 bfriesen Exp $ */
++/* $Id: tif_codec.c,v 1.10.2.3 2013-05-02 14:44:43 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -104,7 +104,8 @@ _notConfigured(TIFF* tif)
+ const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
+ char compression_code[20];
+
+- sprintf( compression_code, "%d", tif->tif_dir.td_compression );
++ snprintf(compression_code, sizeof(compression_code), "%d",
++ tif->tif_dir.td_compression );
+ TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
+ "%s compression support is not configured",
+ c ? c->name : compression_code );
+diff --git a/libtiff/tif_dirinfo.c b/libtiff/tif_dirinfo.c
+index 76ef572..417a2e3 100644
+--- a/libtiff/tif_dirinfo.c
++++ b/libtiff/tif_dirinfo.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_dirinfo.c,v 1.65.2.10 2010-07-06 14:14:41 dron Exp $ */
++/* $Id: tif_dirinfo.c,v 1.65.2.11 2013-05-02 14:44:43 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -869,7 +869,7 @@ _TIFFCreateAnonFieldInfo(TIFF *tif, ttag_t tag, TIFFDataType field_type)
+ * note that this name is a special sign to TIFFClose() and
+ * _TIFFSetupFieldInfo() to free the field
+ */
+- sprintf(fld->field_name, "Tag %d", (int) tag);
++ snprintf(fld->field_name, 32, "Tag %d", (int) tag);
+
+ return fld;
+ }
+diff --git a/libtiff/tif_pixarlog.c b/libtiff/tif_pixarlog.c
+index ed8eb40..6e127fb 100644
+--- a/libtiff/tif_pixarlog.c
++++ b/libtiff/tif_pixarlog.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_pixarlog.c,v 1.15.2.4 2010-06-08 18:50:42 bfriesen Exp $ */
++/* $Id: tif_pixarlog.c,v 1.15.2.5 2012-12-10 17:38:54 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1996-1997 Sam Leffler
+@@ -117,9 +117,9 @@ horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
+ if (n >= stride) {
+ mask = CODE_MASK;
+ if (stride == 3) {
+- t0 = ToLinearF[cr = wp[0]];
+- t1 = ToLinearF[cg = wp[1]];
+- t2 = ToLinearF[cb = wp[2]];
++ t0 = ToLinearF[cr = (wp[0] & mask)];
++ t1 = ToLinearF[cg = (wp[1] & mask)];
++ t2 = ToLinearF[cb = (wp[2] & mask)];
+ op[0] = t0;
+ op[1] = t1;
+ op[2] = t2;
+@@ -136,10 +136,10 @@ horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
+ op[2] = t2;
+ }
+ } else if (stride == 4) {
+- t0 = ToLinearF[cr = wp[0]];
+- t1 = ToLinearF[cg = wp[1]];
+- t2 = ToLinearF[cb = wp[2]];
+- t3 = ToLinearF[ca = wp[3]];
++ t0 = ToLinearF[cr = (wp[0] & mask)];
++ t1 = ToLinearF[cg = (wp[1] & mask)];
++ t2 = ToLinearF[cb = (wp[2] & mask)];
++ t3 = ToLinearF[ca = (wp[3] & mask)];
+ op[0] = t0;
+ op[1] = t1;
+ op[2] = t2;
+@@ -183,9 +183,9 @@ horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
+ if (n >= stride) {
+ mask = CODE_MASK;
+ if (stride == 3) {
+- t0 = ToLinearF[cr = wp[0]] * SCALE12;
+- t1 = ToLinearF[cg = wp[1]] * SCALE12;
+- t2 = ToLinearF[cb = wp[2]] * SCALE12;
++ t0 = ToLinearF[cr = (wp[0] & mask)] * SCALE12;
++ t1 = ToLinearF[cg = (wp[1] & mask)] * SCALE12;
++ t2 = ToLinearF[cb = (wp[2] & mask)] * SCALE12;
+ op[0] = CLAMP12(t0);
+ op[1] = CLAMP12(t1);
+ op[2] = CLAMP12(t2);
+@@ -202,10 +202,10 @@ horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
+ op[2] = CLAMP12(t2);
+ }
+ } else if (stride == 4) {
+- t0 = ToLinearF[cr = wp[0]] * SCALE12;
+- t1 = ToLinearF[cg = wp[1]] * SCALE12;
+- t2 = ToLinearF[cb = wp[2]] * SCALE12;
+- t3 = ToLinearF[ca = wp[3]] * SCALE12;
++ t0 = ToLinearF[cr = (wp[0] & mask)] * SCALE12;
++ t1 = ToLinearF[cg = (wp[1] & mask)] * SCALE12;
++ t2 = ToLinearF[cb = (wp[2] & mask)] * SCALE12;
++ t3 = ToLinearF[ca = (wp[3] & mask)] * SCALE12;
+ op[0] = CLAMP12(t0);
+ op[1] = CLAMP12(t1);
+ op[2] = CLAMP12(t2);
+@@ -247,9 +247,9 @@ horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
+ if (n >= stride) {
+ mask = CODE_MASK;
+ if (stride == 3) {
+- op[0] = ToLinear16[cr = wp[0]];
+- op[1] = ToLinear16[cg = wp[1]];
+- op[2] = ToLinear16[cb = wp[2]];
++ op[0] = ToLinear16[cr = (wp[0] & mask)];
++ op[1] = ToLinear16[cg = (wp[1] & mask)];
++ op[2] = ToLinear16[cb = (wp[2] & mask)];
+ n -= 3;
+ while (n > 0) {
+ wp += 3;
+@@ -260,10 +260,10 @@ horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
+ op[2] = ToLinear16[(cb += wp[2]) & mask];
+ }
+ } else if (stride == 4) {
+- op[0] = ToLinear16[cr = wp[0]];
+- op[1] = ToLinear16[cg = wp[1]];
+- op[2] = ToLinear16[cb = wp[2]];
+- op[3] = ToLinear16[ca = wp[3]];
++ op[0] = ToLinear16[cr = (wp[0] & mask)];
++ op[1] = ToLinear16[cg = (wp[1] & mask)];
++ op[2] = ToLinear16[cb = (wp[2] & mask)];
++ op[3] = ToLinear16[ca = (wp[3] & mask)];
+ n -= 4;
+ while (n > 0) {
+ wp += 4;
+@@ -342,9 +342,9 @@ horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
+ if (n >= stride) {
+ mask = CODE_MASK;
+ if (stride == 3) {
+- op[0] = ToLinear8[cr = wp[0]];
+- op[1] = ToLinear8[cg = wp[1]];
+- op[2] = ToLinear8[cb = wp[2]];
++ op[0] = ToLinear8[cr = (wp[0] & mask)];
++ op[1] = ToLinear8[cg = (wp[1] & mask)];
++ op[2] = ToLinear8[cb = (wp[2] & mask)];
+ n -= 3;
+ while (n > 0) {
+ n -= 3;
+@@ -355,10 +355,10 @@ horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
+ op[2] = ToLinear8[(cb += wp[2]) & mask];
+ }
+ } else if (stride == 4) {
+- op[0] = ToLinear8[cr = wp[0]];
+- op[1] = ToLinear8[cg = wp[1]];
+- op[2] = ToLinear8[cb = wp[2]];
+- op[3] = ToLinear8[ca = wp[3]];
++ op[0] = ToLinear8[cr = (wp[0] & mask)];
++ op[1] = ToLinear8[cg = (wp[1] & mask)];
++ op[2] = ToLinear8[cb = (wp[2] & mask)];
++ op[3] = ToLinear8[ca = (wp[3] & mask)];
+ n -= 4;
+ while (n > 0) {
+ n -= 4;
+@@ -393,9 +393,9 @@ horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
+ mask = CODE_MASK;
+ if (stride == 3) {
+ op[0] = 0;
+- t1 = ToLinear8[cb = wp[2]];
+- t2 = ToLinear8[cg = wp[1]];
+- t3 = ToLinear8[cr = wp[0]];
++ t1 = ToLinear8[cb = (wp[2] & mask)];
++ t2 = ToLinear8[cg = (wp[1] & mask)];
++ t3 = ToLinear8[cr = (wp[0] & mask)];
+ op[1] = t1;
+ op[2] = t2;
+ op[3] = t3;
+@@ -413,10 +413,10 @@ horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
+ op[3] = t3;
+ }
+ } else if (stride == 4) {
+- t0 = ToLinear8[ca = wp[3]];
+- t1 = ToLinear8[cb = wp[2]];
+- t2 = ToLinear8[cg = wp[1]];
+- t3 = ToLinear8[cr = wp[0]];
++ t0 = ToLinear8[ca = (wp[3] & mask)];
++ t1 = ToLinear8[cb = (wp[2] & mask)];
++ t2 = ToLinear8[cg = (wp[1] & mask)];
++ t3 = ToLinear8[cr = (wp[0] & mask)];
+ op[0] = t0;
+ op[1] = t1;
+ op[2] = t2;
+@@ -630,10 +630,10 @@ PixarLogGuessDataFmt(TIFFDirectory *td)
+ return guess;
+ }
+
+-static uint32
+-multiply(size_t m1, size_t m2)
++static tsize_t
++multiply(tsize_t m1, tsize_t m2)
+ {
+- uint32 bytes = m1 * m2;
++ tsize_t bytes = m1 * m2;
+
+ if (m1 && bytes / m1 != m2)
+ bytes = 0;
+@@ -641,6 +641,20 @@ multiply(size_t m1, size_t m2)
+ return bytes;
+ }
+
++static tsize_t
++add_ms(tsize_t m1, tsize_t m2)
++{
++ tsize_t bytes = m1 + m2;
++
++ /* if either input is zero, assume overflow already occurred */
++ if (m1 == 0 || m2 == 0)
++ bytes = 0;
++ else if (bytes <= m1 || bytes <= m2)
++ bytes = 0;
++
++ return bytes;
++}
++
+ static int
+ PixarLogSetupDecode(TIFF* tif)
+ {
+@@ -661,6 +675,8 @@ PixarLogSetupDecode(TIFF* tif)
+ td->td_samplesperpixel : 1);
+ tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
+ td->td_rowsperstrip), sizeof(uint16));
++ /* add one more stride in case input ends mid-stride */
++ tbuf_size = add_ms(tbuf_size, sizeof(uint16) * sp->stride);
+ if (tbuf_size == 0)
+ return (0);
+ sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
+diff --git a/libtiff/tif_print.c b/libtiff/tif_print.c
+index 7634f6e..2b255da 100644
+--- a/libtiff/tif_print.c
++++ b/libtiff/tif_print.c
+@@ -1,4 +1,4 @@
+-/* $Id: tif_print.c,v 1.36.2.5 2010-07-06 14:05:30 dron Exp $ */
++/* $Id: tif_print.c,v 1.36.2.6 2012-12-12 23:18:05 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -514,8 +514,19 @@ TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
+ continue;
+
+ if(fip->field_passcount) {
+- if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
++ if (fip->field_readcount == TIFF_VARIABLE2 ) {
++ if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
++ continue;
++ } else if (fip->field_readcount == TIFF_VARIABLE ) {
++ uint16 small_value_count;
++ if(TIFFGetField(tif, tag, &small_value_count, &raw_data) != 1)
++ continue;
++ value_count = small_value_count;
++ } else {
++ assert (fip->field_readcount == TIFF_VARIABLE
++ || fip->field_readcount == TIFF_VARIABLE2);
+ continue;
++ }
+ } else {
+ if (fip->field_readcount == TIFF_VARIABLE
+ || fip->field_readcount == TIFF_VARIABLE2)
+diff --git a/man/Makefile.in b/man/Makefile.in
+index a007da7..cac0721 100644
+--- a/man/Makefile.in
++++ b/man/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/port/Makefile.in b/port/Makefile.in
+index 6674109..f95d58f 100644
+--- a/port/Makefile.in
++++ b/port/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/test/Makefile.in b/test/Makefile.in
+index 61ea1ff..f88959f 100644
+--- a/test/Makefile.in
++++ b/test/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/tools/Makefile.in b/tools/Makefile.in
+index 47dcec8..6f3d517 100644
+--- a/tools/Makefile.in
++++ b/tools/Makefile.in
+@@ -1,4 +1,4 @@
+-# Makefile.in generated by automake 1.12.4 from Makefile.am.
++# Makefile.in generated by automake 1.12.5 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994-2012 Free Software Foundation, Inc.
+diff --git a/tools/ppm2tiff.c b/tools/ppm2tiff.c
+index 6078459..ec8be5d 100644
+--- a/tools/ppm2tiff.c
++++ b/tools/ppm2tiff.c
+@@ -1,4 +1,4 @@
+-/* $Id: ppm2tiff.c,v 1.13.2.2 2010-06-08 18:50:44 bfriesen Exp $ */
++/* $Id: ppm2tiff.c,v 1.13.2.3 2012-12-10 18:27:35 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1991-1997 Sam Leffler
+@@ -68,6 +68,17 @@ BadPPM(char* file)
+ exit(-2);
+ }
+
++static tsize_t
++multiply_ms(tsize_t m1, tsize_t m2)
++{
++ tsize_t bytes = m1 * m2;
++
++ if (m1 && bytes / m1 != m2)
++ bytes = 0;
++
++ return bytes;
++}
++
+ int
+ main(int argc, char* argv[])
+ {
+@@ -85,6 +96,7 @@ main(int argc, char* argv[])
+ int c;
+ extern int optind;
+ extern char* optarg;
++ tsize_t scanline_size;
+
+ if (argc < 2) {
+ fprintf(stderr, "%s: Too few arguments\n", argv[0]);
+@@ -217,7 +229,8 @@ main(int argc, char* argv[])
+ }
+ switch (bpp) {
+ case 1:
+- linebytes = (spp * w + (8 - 1)) / 8;
++ /* if round-up overflows, result will be zero, OK */
++ linebytes = (multiply_ms(spp, w) + (8 - 1)) / 8;
+ if (rowsperstrip == (uint32) -1) {
+ TIFFSetField(out, TIFFTAG_ROWSPERSTRIP, h);
+ } else {
+@@ -226,15 +239,31 @@ main(int argc, char* argv[])
+ }
+ break;
+ case 8:
+- linebytes = spp * w;
++ linebytes = multiply_ms(spp, w);
+ TIFFSetField(out, TIFFTAG_ROWSPERSTRIP,
+ TIFFDefaultStripSize(out, rowsperstrip));
+ break;
+ }
+- if (TIFFScanlineSize(out) > linebytes)
++ if (linebytes == 0) {
++ fprintf(stderr, "%s: scanline size overflow\n", infile);
++ (void) TIFFClose(out);
++ exit(-2);
++ }
++ scanline_size = TIFFScanlineSize(out);
++ if (scanline_size == 0) {
++ /* overflow - TIFFScanlineSize already printed a message */
++ (void) TIFFClose(out);
++ exit(-2);
++ }
++ if (scanline_size < linebytes)
+ buf = (unsigned char *)_TIFFmalloc(linebytes);
+ else
+- buf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
++ buf = (unsigned char *)_TIFFmalloc(scanline_size);
++ if (buf == NULL) {
++ fprintf(stderr, "%s: Not enough memory\n", infile);
++ (void) TIFFClose(out);
++ exit(-2);
++ }
+ if (resolution > 0) {
+ TIFFSetField(out, TIFFTAG_XRESOLUTION, resolution);
+ TIFFSetField(out, TIFFTAG_YRESOLUTION, resolution);
+diff --git a/tools/rgb2ycbcr.c b/tools/rgb2ycbcr.c
+index 0b30b51..527c036 100644
+--- a/tools/rgb2ycbcr.c
++++ b/tools/rgb2ycbcr.c
+@@ -1,4 +1,4 @@
+-/* $Id: rgb2ycbcr.c,v 1.9.2.2 2010-06-08 18:50:44 bfriesen Exp $ */
++/* $Id: rgb2ycbcr.c,v 1.9.2.3 2013-05-02 14:44:44 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1991-1997 Sam Leffler
+@@ -326,7 +326,8 @@ tiffcvt(TIFF* in, TIFF* out)
+ TIFFSetField(out, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
+ { char buf[2048];
+ char *cp = strrchr(TIFFFileName(in), '/');
+- sprintf(buf, "YCbCr conversion of %s", cp ? cp+1 : TIFFFileName(in));
++ snprintf(buf, sizeof(buf), "YCbCr conversion of %s",
++ cp ? cp+1 : TIFFFileName(in));
+ TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, buf);
+ }
+ TIFFSetField(out, TIFFTAG_SOFTWARE, TIFFGetVersion());
+diff --git a/tools/tiff2bw.c b/tools/tiff2bw.c
+index 8fbf061..98908d1 100644
+--- a/tools/tiff2bw.c
++++ b/tools/tiff2bw.c
+@@ -1,4 +1,4 @@
+-/* $Id: tiff2bw.c,v 1.12.2.2 2010-07-02 12:03:27 dron Exp $ */
++/* $Id: tiff2bw.c,v 1.12.2.3 2013-05-02 14:44:44 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -201,7 +201,7 @@ main(int argc, char* argv[])
+ }
+ }
+ TIFFSetField(out, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_MINISBLACK);
+- sprintf(thing, "B&W version of %s", argv[optind]);
++ snprintf(thing, sizeof(thing), "B&W version of %s", argv[optind]);
+ TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
+ TIFFSetField(out, TIFFTAG_SOFTWARE, "tiff2bw");
+ outbuf = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
+diff --git a/tools/tiff2pdf.c b/tools/tiff2pdf.c
+index dee6435..c55b927 100644
+--- a/tools/tiff2pdf.c
++++ b/tools/tiff2pdf.c
+@@ -1,4 +1,4 @@
+-/* $Id: tiff2pdf.c,v 1.37.2.22 2012-07-19 15:43:31 tgl Exp $
++/* $Id: tiff2pdf.c,v 1.37.2.24 2013-05-02 14:54:18 tgl Exp $
+ *
+ * tiff2pdf - converts a TIFF image to a PDF document
+ *
+@@ -3337,33 +3337,56 @@ int t2p_process_jpeg_strip(
+ uint32 height){
+
+ tsize_t i=0;
+- uint16 ri =0;
+- uint16 v_samp=1;
+- uint16 h_samp=1;
+- int j=0;
+-
+- i++;
+-
+- while(i<(*striplength)){
++
++ while (i < *striplength) {
++ tsize_t datalen;
++ uint16 ri;
++ uint16 v_samp;
++ uint16 h_samp;
++ int j;
++ int ncomp;
++
++ /* marker header: one or more FFs */
++ if (strip[i] != 0xff)
++ return(0);
++ i++;
++ while (i < *striplength && strip[i] == 0xff)
++ i++;
++ if (i >= *striplength)
++ return(0);
++ /* SOI is the only pre-SOS marker without a length word */
++ if (strip[i] == 0xd8)
++ datalen = 0;
++ else {
++ if ((*striplength - i) <= 2)
++ return(0);
++ datalen = (strip[i+1] << 8) | strip[i+2];
++ if (datalen < 2 || datalen >= (*striplength - i))
++ return(0);
++ }
+ switch( strip[i] ){
+- case 0xd8:
+- /* SOI - start of image */
++ case 0xd8: /* SOI - start of image */
+ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), 2);
+ *bufferoffset+=2;
+- i+=2;
+ break;
+- case 0xc0:
+- case 0xc1:
+- case 0xc3:
+- case 0xc9:
+- case 0xca:
++ case 0xc0: /* SOF0 */
++ case 0xc1: /* SOF1 */
++ case 0xc3: /* SOF3 */
++ case 0xc9: /* SOF9 */
++ case 0xca: /* SOF10 */
+ if(no==0){
+- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
+- for(j=0;j<buffer[*bufferoffset+9];j++){
+- if( (buffer[*bufferoffset+11+(2*j)]>>4) > h_samp)
+- h_samp = (buffer[*bufferoffset+11+(2*j)]>>4);
+- if( (buffer[*bufferoffset+11+(2*j)] & 0x0f) > v_samp)
+- v_samp = (buffer[*bufferoffset+11+(2*j)] & 0x0f);
++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
++ ncomp = buffer[*bufferoffset+9];
++ if (ncomp < 1 || ncomp > 4)
++ return(0);
++ v_samp=1;
++ h_samp=1;
++ for(j=0;j<ncomp;j++){
++ uint16 samp = buffer[*bufferoffset+11+(3*j)];
++ if( (samp>>4) > h_samp)
++ h_samp = (samp>>4);
++ if( (samp & 0x0f) > v_samp)
++ v_samp = (samp & 0x0f);
+ }
+ v_samp*=8;
+ h_samp*=8;
+@@ -3377,45 +3400,43 @@ int t2p_process_jpeg_strip(
+ (unsigned char) ((height>>8) & 0xff);
+ buffer[*bufferoffset+6]=
+ (unsigned char) (height & 0xff);
+- *bufferoffset+=strip[i+2]+2;
+- i+=strip[i+2]+2;
+-
++ *bufferoffset+=datalen+2;
++ /* insert a DRI marker */
+ buffer[(*bufferoffset)++]=0xff;
+ buffer[(*bufferoffset)++]=0xdd;
+ buffer[(*bufferoffset)++]=0x00;
+ buffer[(*bufferoffset)++]=0x04;
+ buffer[(*bufferoffset)++]=(ri >> 8) & 0xff;
+ buffer[(*bufferoffset)++]= ri & 0xff;
+- } else {
+- i+=strip[i+2]+2;
+ }
+ break;
+- case 0xc4:
+- case 0xdb:
+- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
+- *bufferoffset+=strip[i+2]+2;
+- i+=strip[i+2]+2;
++ case 0xc4: /* DHT */
++ case 0xdb: /* DQT */
++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
++ *bufferoffset+=datalen+2;
+ break;
+- case 0xda:
++ case 0xda: /* SOS */
+ if(no==0){
+- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), strip[i+2]+2);
+- *bufferoffset+=strip[i+2]+2;
+- i+=strip[i+2]+2;
++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), datalen+2);
++ *bufferoffset+=datalen+2;
+ } else {
+ buffer[(*bufferoffset)++]=0xff;
+ buffer[(*bufferoffset)++]=
+ (unsigned char)(0xd0 | ((no-1)%8));
+- i+=strip[i+2]+2;
+ }
+- _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i-1]), (*striplength)-i-1);
+- *bufferoffset+=(*striplength)-i-1;
++ i += datalen + 1;
++ /* copy remainder of strip */
++ _TIFFmemcpy(&(buffer[*bufferoffset]), &(strip[i]), *striplength - i);
++ *bufferoffset+= *striplength - i;
+ return(1);
+ default:
+- i+=strip[i+2]+2;
++ /* ignore any other marker */
++ break;
+ }
++ i += datalen + 1;
+ }
+-
+
++ /* failed to find SOS marker */
+ return(0);
+ }
+ #endif
+@@ -3605,7 +3626,9 @@ tsize_t t2p_write_pdf_header(T2P* t2p, TIFF* output){
+ char buffer[16];
+ int buflen=0;
+
+- buflen=sprintf(buffer, "%%PDF-%u.%u ", t2p->pdf_majorversion&0xff, t2p->pdf_minorversion&0xff);
++ buflen = snprintf(buffer, sizeof(buffer), "%%PDF-%u.%u ",
++ t2p->pdf_majorversion&0xff,
++ t2p->pdf_minorversion&0xff);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t)"\n%\342\343\317\323\n", 7);
+
+@@ -3619,10 +3642,10 @@ tsize_t t2p_write_pdf_header(T2P* t2p, TIFF* output){
+ tsize_t t2p_write_pdf_obj_start(uint32 number, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+- buflen=sprintf(buffer, "%lu", (unsigned long)number);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen );
+ written += t2pWriteFile(output, (tdata_t) " 0 obj\n", 7);
+
+@@ -3661,13 +3684,13 @@ tsize_t t2p_write_pdf_name(unsigned char* name, TIFF* output){
+ written += t2pWriteFile(output, (tdata_t) "/", 1);
+ for (i=0;i<namelen;i++){
+ if ( ((unsigned char)name[i]) < 0x21){
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ nextchar=1;
+ }
+ if ( ((unsigned char)name[i]) > 0x7E){
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ nextchar=1;
+@@ -3675,57 +3698,57 @@ tsize_t t2p_write_pdf_name(unsigned char* name, TIFF* output){
+ if (nextchar==0){
+ switch (name[i]){
+ case 0x23:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x25:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x28:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x29:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x2F:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x3C:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x3E:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x5B:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x5D:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x7B:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+ case 0x7D:
+- sprintf(buffer, "#%.2X", name[i]);
++ snprintf(buffer, sizeof(buffer), "#%.2X", name[i]);
+ buffer[sizeof(buffer) - 1] = '\0';
+ written += t2pWriteFile(output, (tdata_t) buffer, 3);
+ break;
+@@ -3840,14 +3863,14 @@ tsize_t t2p_write_pdf_stream_end(TIFF* output){
+ tsize_t t2p_write_pdf_stream_dict(tsize_t len, uint32 number, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ written += t2pWriteFile(output, (tdata_t) "/Length ", 8);
+ if(len!=0){
+ written += t2p_write_pdf_stream_length(len, output);
+ } else {
+- buflen=sprintf(buffer, "%lu", (unsigned long)number);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)number);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
+ }
+@@ -3888,10 +3911,10 @@ tsize_t t2p_write_pdf_stream_dict_end(TIFF* output){
+ tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+- buflen=sprintf(buffer, "%lu", (unsigned long)len);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)len);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "\n", 1);
+
+@@ -3905,7 +3928,7 @@ tsize_t t2p_write_pdf_stream_length(tsize_t len, TIFF* output){
+ tsize_t t2p_write_pdf_catalog(T2P* t2p, TIFF* output)
+ {
+ tsize_t written = 0;
+- char buffer[16];
++ char buffer[32];
+ int buflen = 0;
+
+ written += t2pWriteFile(output,
+@@ -3944,7 +3967,6 @@ tsize_t t2p_write_pdf_info(T2P* t2p, TIFF* input, TIFF* output)
+ written += t2p_write_pdf_string(t2p->pdf_datetime, output);
+ }
+ written += t2pWriteFile(output, (tdata_t) "\n/Producer ", 11);
+- _TIFFmemset((tdata_t)buffer, 0x00, sizeof(buffer));
+ snprintf(buffer, sizeof(buffer), "libtiff / tiff2pdf - %d", TIFFLIB_VERSION);
+ written += t2p_write_pdf_string(buffer, output);
+ written += t2pWriteFile(output, (tdata_t) "\n", 1);
+@@ -4085,7 +4107,7 @@ tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
+ {
+ tsize_t written=0;
+ tdir_t i=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ int page=0;
+@@ -4093,7 +4115,7 @@ tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
+ (tdata_t) "<< \n/Type /Pages \n/Kids [ ", 26);
+ page = t2p->pdf_pages+1;
+ for (i=0;i<t2p->tiff_pagecount;i++){
+- buflen=sprintf(buffer, "%d", page);
++ buflen=snprintf(buffer, sizeof(buffer), "%d", page);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+ if ( ((i+1)%8)==0 ) {
+@@ -4108,8 +4130,7 @@ tsize_t t2p_write_pdf_pages(T2P* t2p, TIFF* output)
+ }
+ }
+ written += t2pWriteFile(output, (tdata_t) "] \n/Count ", 10);
+- _TIFFmemset(buffer, 0x00, 16);
+- buflen=sprintf(buffer, "%d", t2p->tiff_pagecount);
++ buflen=snprintf(buffer, sizeof(buffer), "%d", t2p->tiff_pagecount);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " \n>> \n", 6);
+
+@@ -4124,28 +4145,28 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
+
+ unsigned int i=0;
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[256];
+ int buflen=0;
+
+ written += t2pWriteFile(output, (tdata_t) "<<\n/Type /Page \n/Parent ", 24);
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_pages);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_pages);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
+ written += t2pWriteFile(output, (tdata_t) "/MediaBox [", 11);
+- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x1);
++ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x1);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " ", 1);
+- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y1);
++ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y1);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " ", 1);
+- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.x2);
++ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.x2);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " ", 1);
+- buflen=sprintf(buffer, "%.4f",t2p->pdf_mediabox.y2);
++ buflen=snprintf(buffer, sizeof(buffer), "%.4f",t2p->pdf_mediabox.y2);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "] \n", 3);
+ written += t2pWriteFile(output, (tdata_t) "/Contents ", 10);
+- buflen=sprintf(buffer, "%lu", (unsigned long)(object + 1));
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(object + 1));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R \n", 6);
+ written += t2pWriteFile(output, (tdata_t) "/Resources << \n", 15);
+@@ -4153,15 +4174,13 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
+ written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
+ for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount;i++){
+ written += t2pWriteFile(output, (tdata_t) "/Im", 3);
+- buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
++ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "_", 1);
+- buflen = sprintf(buffer, "%u", i+1);
++ buflen = snprintf(buffer, sizeof(buffer), "%u", i+1);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " ", 1);
+- buflen = sprintf(
+- buffer,
+- "%lu",
++ buflen = snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+@@ -4173,12 +4192,10 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
+ } else {
+ written += t2pWriteFile(output, (tdata_t) "/XObject <<\n", 12);
+ written += t2pWriteFile(output, (tdata_t) "/Im", 3);
+- buflen = sprintf(buffer, "%u", t2p->pdf_page+1);
++ buflen = snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " ", 1);
+- buflen = sprintf(
+- buffer,
+- "%lu",
++ buflen = snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(object+3+(2*i)+t2p->tiff_pages[t2p->pdf_page].page_extra));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+@@ -4187,9 +4204,7 @@ tsize_t t2p_write_pdf_page(uint32 object, T2P* t2p, TIFF* output){
+ if(t2p->tiff_transferfunctioncount != 0) {
+ written += t2pWriteFile(output, (tdata_t) "/ExtGState <<", 13);
+ t2pWriteFile(output, (tdata_t) "/GS1 ", 5);
+- buflen = sprintf(
+- buffer,
+- "%lu",
++ buflen = snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(object + 3));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+@@ -4562,7 +4577,7 @@ tsize_t t2p_write_pdf_page_content_stream(T2P* t2p, TIFF* output){
+ if(t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount>0){
+ for(i=0;i<t2p->tiff_tiles[t2p->pdf_page].tiles_tilecount; i++){
+ box=t2p->tiff_tiles[t2p->pdf_page].tiles_tiles[i].tile_box;
+- buflen=sprintf(buffer,
++ buflen=snprintf(buffer, sizeof(buffer),
+ "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d_%ld Do Q\n",
+ t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
+ box.mat[0],
+@@ -4577,7 +4592,7 @@ tsize_t t2p_write_pdf_page_content_stream(T2P* t2p, TIFF* output){
+ }
+ } else {
+ box=t2p->pdf_imagebox;
+- buflen=sprintf(buffer,
++ buflen=snprintf(buffer, sizeof(buffer),
+ "q %s %.4f %.4f %.4f %.4f %.4f %.4f cm /Im%d Do Q\n",
+ t2p->tiff_transferfunctioncount?"/GS1 gs ":"",
+ box.mat[0],
+@@ -4602,59 +4617,48 @@ tsize_t t2p_write_pdf_xobject_stream_dict(ttile_t tile,
+ TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ written += t2p_write_pdf_stream_dict(0, t2p->pdf_xrefcount+1, output);
+ written += t2pWriteFile(output,
+ (tdata_t) "/Type /XObject \n/Subtype /Image \n/Name /Im",
+ 42);
+- buflen=sprintf(buffer, "%u", t2p->pdf_page+1);
++ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_page+1);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ if(tile != 0){
+ written += t2pWriteFile(output, (tdata_t) "_", 1);
+- buflen=sprintf(buffer, "%lu", (unsigned long)tile);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)tile);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ }
+ written += t2pWriteFile(output, (tdata_t) "\n/Width ", 8);
+- _TIFFmemset((tdata_t)buffer, 0x00, 16);
+ if(tile==0){
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_width);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_width);
+ } else {
+ if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
+ } else {
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
+ }
+ }
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "\n/Height ", 9);
+- _TIFFmemset((tdata_t)buffer, 0x00, 16);
+ if(tile==0){
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->tiff_length);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->tiff_length);
+ } else {
+ if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)!=0){
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
+ } else {
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
+ }
+ }
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "\n/BitsPerComponent ", 19);
+- _TIFFmemset((tdata_t)buffer, 0x00, 16);
+- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
++ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "\n/ColorSpace ", 13);
+ written += t2p_write_pdf_xobject_cs(t2p, output);
+@@ -4698,11 +4702,10 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
+ t2p->pdf_colorspace ^= T2P_CS_PALETTE;
+ written += t2p_write_pdf_xobject_cs(t2p, output);
+ t2p->pdf_colorspace |= T2P_CS_PALETTE;
+- buflen=sprintf(buffer, "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
++ buflen=snprintf(buffer, sizeof(buffer), "%u", (0x0001 << t2p->tiff_bitspersample)-1 );
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " ", 1);
+- _TIFFmemset(buffer, 0x00, 16);
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_palettecs );
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_palettecs );
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ]\n", 7);
+ return(written);
+@@ -4736,10 +4739,10 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
+ X_W /= Y_W;
+ Z_W /= Y_W;
+ Y_W = 1.0F;
+- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
++ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "/Range ", 7);
+- buflen=sprintf(buffer, "[%d %d %d %d] \n",
++ buflen=snprintf(buffer, sizeof(buffer), "[%d %d %d %d] \n",
+ t2p->pdf_labrange[0],
+ t2p->pdf_labrange[1],
+ t2p->pdf_labrange[2],
+@@ -4755,26 +4758,26 @@ tsize_t t2p_write_pdf_xobject_cs(T2P* t2p, TIFF* output){
+ tsize_t t2p_write_pdf_transfer(T2P* t2p, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ written += t2pWriteFile(output, (tdata_t) "<< /Type /ExtGState \n/TR ", 25);
+ if(t2p->tiff_transferfunctioncount == 1){
+- buflen=sprintf(buffer, "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(t2p->pdf_xrefcount + 1));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+ } else {
+ written += t2pWriteFile(output, (tdata_t) "[ ", 2);
+- buflen=sprintf(buffer, "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(t2p->pdf_xrefcount + 1));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+- buflen=sprintf(buffer, "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(t2p->pdf_xrefcount + 2));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+- buflen=sprintf(buffer, "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)(t2p->pdf_xrefcount + 3));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R ", 5);
+@@ -4796,7 +4799,7 @@ tsize_t t2p_write_pdf_transfer_dict(T2P* t2p, TIFF* output, uint16 i){
+ written += t2pWriteFile(output, (tdata_t) "/FunctionType 0 \n", 17);
+ written += t2pWriteFile(output, (tdata_t) "/Domain [0.0 1.0] \n", 19);
+ written += t2pWriteFile(output, (tdata_t) "/Range [0.0 1.0] \n", 18);
+- buflen=sprintf(buffer, "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
++ buflen=snprintf(buffer, sizeof(buffer), "/Size [%u] \n", (1<<t2p->tiff_bitspersample));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "/BitsPerSample 16 \n", 19);
+ written += t2p_write_pdf_stream_dict(1<<(t2p->tiff_bitspersample+1), 0, output);
+@@ -4823,7 +4826,7 @@ tsize_t t2p_write_pdf_transfer_stream(T2P* t2p, TIFF* output, uint16 i){
+ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[128];
++ char buffer[256];
+ int buflen=0;
+
+ float X_W=0.0;
+@@ -4891,16 +4894,16 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
+ written += t2pWriteFile(output, (tdata_t) "<< \n", 4);
+ if(t2p->pdf_colorspace & T2P_CS_CALGRAY){
+ written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
+- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
++ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "/Gamma 2.2 \n", 12);
+ }
+ if(t2p->pdf_colorspace & T2P_CS_CALRGB){
+ written += t2pWriteFile(output, (tdata_t) "/WhitePoint ", 12);
+- buflen=sprintf(buffer, "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
++ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f] \n", X_W, Y_W, Z_W);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "/Matrix ", 8);
+- buflen=sprintf(buffer, "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
++ buflen=snprintf(buffer, sizeof(buffer), "[%.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f] \n",
+ X_R, Y_R, Z_R,
+ X_G, Y_G, Z_G,
+ X_B, Y_B, Z_B);
+@@ -4919,11 +4922,11 @@ tsize_t t2p_write_pdf_xobject_calcs(T2P* t2p, TIFF* output){
+ tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ written += t2pWriteFile(output, (tdata_t) "[/ICCBased ", 11);
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_icccs);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_icccs);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " 0 R] \n", 7);
+
+@@ -4933,11 +4936,11 @@ tsize_t t2p_write_pdf_xobject_icccs(T2P* t2p, TIFF* output){
+ tsize_t t2p_write_pdf_xobject_icccs_dict(T2P* t2p, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ written += t2pWriteFile(output, (tdata_t) "/N ", 3);
+- buflen=sprintf(buffer, "%u \n", t2p->tiff_samplesperpixel);
++ buflen=snprintf(buffer, sizeof(buffer), "%u \n", t2p->tiff_samplesperpixel);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) "/Alternate ", 11);
+ t2p->pdf_colorspace ^= T2P_CS_ICCBASED;
+@@ -5002,7 +5005,7 @@ tsize_t t2p_write_pdf_xobject_decode(T2P* t2p, TIFF* output){
+ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[16];
++ char buffer[32];
+ int buflen=0;
+
+ if(t2p->pdf_compression==T2P_COMPRESS_NONE){
+@@ -5017,41 +5020,33 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
+ written += t2pWriteFile(output, (tdata_t) "<< /K -1 ", 9);
+ if(tile==0){
+ written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
+- buflen=sprintf(buffer, "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_width);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
+- buflen=sprintf(buffer, "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_length);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ } else {
+ if(t2p_tile_is_right_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
+ written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilewidth);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ } else {
+ written += t2pWriteFile(output, (tdata_t) "/Columns ", 9);
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilewidth);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ }
+ if(t2p_tile_is_bottom_edge(t2p->tiff_tiles[t2p->pdf_page], tile-1)==0){
+ written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_tilelength);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ } else {
+ written += t2pWriteFile(output, (tdata_t) " /Rows ", 7);
+- buflen=sprintf(
+- buffer,
+- "%lu",
++ buflen=snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_tiles[t2p->pdf_page].tiles_edgetilelength);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ }
+@@ -5078,21 +5073,17 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
+ if(t2p->pdf_compressionquality%100){
+ written += t2pWriteFile(output, (tdata_t) "/DecodeParms ", 13);
+ written += t2pWriteFile(output, (tdata_t) "<< /Predictor ", 14);
+- _TIFFmemset(buffer, 0x00, 16);
+- buflen=sprintf(buffer, "%u", t2p->pdf_compressionquality%100);
++ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->pdf_compressionquality%100);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " /Columns ", 10);
+- _TIFFmemset(buffer, 0x00, 16);
+- buflen = sprintf(buffer, "%lu",
++ buflen = snprintf(buffer, sizeof(buffer), "%lu",
+ (unsigned long)t2p->tiff_width);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " /Colors ", 9);
+- _TIFFmemset(buffer, 0x00, 16);
+- buflen=sprintf(buffer, "%u", t2p->tiff_samplesperpixel);
++ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_samplesperpixel);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " /BitsPerComponent ", 19);
+- _TIFFmemset(buffer, 0x00, 16);
+- buflen=sprintf(buffer, "%u", t2p->tiff_bitspersample);
++ buflen=snprintf(buffer, sizeof(buffer), "%u", t2p->tiff_bitspersample);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) ">>\n", 3);
+ }
+@@ -5112,16 +5103,16 @@ tsize_t t2p_write_pdf_xobject_stream_filter(ttile_t tile, T2P* t2p, TIFF* output
+ tsize_t t2p_write_pdf_xreftable(T2P* t2p, TIFF* output){
+
+ tsize_t written=0;
+- char buffer[21];
++ char buffer[64];
+ int buflen=0;
+ uint32 i=0;
+
+ written += t2pWriteFile(output, (tdata_t) "xref\n0 ", 7);
+- buflen=sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount + 1));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+ written += t2pWriteFile(output, (tdata_t) " \n0000000000 65535 f \n", 22);
+ for (i=0;i<t2p->pdf_xrefcount;i++){
+- sprintf(buffer, "%.10lu 00000 n \n",
++ snprintf(buffer, sizeof(buffer), "%.10lu 00000 n \n",
+ (unsigned long)t2p->pdf_xrefoffsets[i]);
+ written += t2pWriteFile(output, (tdata_t) buffer, 20);
+ }
+@@ -5145,17 +5136,14 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
+ snprintf(t2p->pdf_fileid + i, 9, "%.8X", rand());
+
+ written += t2pWriteFile(output, (tdata_t) "trailer\n<<\n/Size ", 17);
+- buflen = sprintf(buffer, "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
++ buflen = snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)(t2p->pdf_xrefcount+1));
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+- _TIFFmemset(buffer, 0x00, 32);
+ written += t2pWriteFile(output, (tdata_t) "\n/Root ", 7);
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_catalog);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_catalog);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+- _TIFFmemset(buffer, 0x00, 32);
+ written += t2pWriteFile(output, (tdata_t) " 0 R \n/Info ", 12);
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_info);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_info);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+- _TIFFmemset(buffer, 0x00, 32);
+ written += t2pWriteFile(output, (tdata_t) " 0 R \n/ID[<", 11);
+ written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
+ sizeof(t2p->pdf_fileid) - 1);
+@@ -5163,9 +5151,8 @@ tsize_t t2p_write_pdf_trailer(T2P* t2p, TIFF* output)
+ written += t2pWriteFile(output, (tdata_t) t2p->pdf_fileid,
+ sizeof(t2p->pdf_fileid) - 1);
+ written += t2pWriteFile(output, (tdata_t) ">]\n>>\nstartxref\n", 16);
+- buflen=sprintf(buffer, "%lu", (unsigned long)t2p->pdf_startxref);
++ buflen=snprintf(buffer, sizeof(buffer), "%lu", (unsigned long)t2p->pdf_startxref);
+ written += t2pWriteFile(output, (tdata_t) buffer, buflen);
+- _TIFFmemset(buffer, 0x00, 32);
+ written += t2pWriteFile(output, (tdata_t) "\n%%EOF\n", 7);
+
+ return(written);
+diff --git a/tools/tiff2ps.c b/tools/tiff2ps.c
+index 2d02b23..b9befe7 100644
+--- a/tools/tiff2ps.c
++++ b/tools/tiff2ps.c
+@@ -1,4 +1,4 @@
+-/* $Id: tiff2ps.c,v 1.35.2.7 2011-04-09 16:53:56 bfriesen Exp $ */
++/* $Id: tiff2ps.c,v 1.35.2.9 2013-05-02 14:44:44 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -44,6 +44,11 @@
+
+ /*
+ * Revision history
++ * 2013-Jan-21
++ * Richard Nolde: 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 of being
++ * retested for each page.
+ *
+ * 2010-Sep-17
+ * Richard Nolde: Reinstate code from Feb 2009 that never got
+@@ -423,9 +428,10 @@ main(int argc, char* argv[])
+ /* auto rotate requires a specified page width and height */
+ if (auto_rotate == TRUE)
+ {
++ /*
+ if ((pageWidth == 0) || (pageHeight == 0))
+ TIFFWarning ("-r auto", " requires page height and width specified with -h and -w");
+-
++ */
+ if ((maxPageWidth > 0) || (maxPageHeight > 0))
+ {
+ TIFFError ("-r auto", " is incompatible with maximum page width/height specified by -H or -W");
+@@ -1594,6 +1600,8 @@ int TIFF2PS(FILE* fd, TIFF* tif, double pgwidth, double pgheight, double lm, dou
+ }
+ if (generateEPSF)
+ break;
++ if (auto_rotate)
++ rotation = 0.0;
+ TIFFGetFieldDefaulted(tif, TIFFTAG_SUBFILETYPE, &subfiletype);
+ } while (((subfiletype & FILETYPE_PAGE) || printAll) && TIFFReadDirectory(tif));
+
+@@ -1783,8 +1791,8 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
+ imageOp = "imagemask";
+
+ (void)strcpy(im_x, "0");
+- (void)sprintf(im_y, "%lu", (long) h);
+- (void)sprintf(im_h, "%lu", (long) h);
++ (void)snprintf(im_y, sizeof(im_y), "%lu", (long) h);
++ (void)snprintf(im_h, sizeof(im_h), "%lu", (long) h);
+ tile_width = w;
+ tile_height = h;
+ if (TIFFIsTiled(tif)) {
+@@ -1805,7 +1813,7 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
+ }
+ if (tile_height < h) {
+ fputs("/im_y 0 def\n", fd);
+- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
++ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
+ }
+ } else {
+ repeat_count = tf_numberstrips;
+@@ -1817,7 +1825,7 @@ PS_Lvl2ImageDict(FILE* fd, TIFF* tif, uint32 w, uint32 h)
+ fprintf(fd, "/im_h %lu def\n",
+ (unsigned long) tile_height);
+ (void)strcpy(im_h, "im_h");
+- (void)sprintf(im_y, "%lu im_y sub", (unsigned long) h);
++ (void)snprintf(im_y, sizeof(im_y), "%lu im_y sub", (unsigned long) h);
+ }
+ }
+
+diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
+index d00c912..6c53e74 100644
+--- a/tools/tiffcrop.c
++++ b/tools/tiffcrop.c
+@@ -1,4 +1,4 @@
+-/* $Id: tiffcrop.c,v 1.3.2.15 2010-12-14 02:03:55 faxguy Exp $ */
++/* $Id: tiffcrop.c,v 1.3.2.16 2013-05-02 14:44:44 tgl Exp $ */
+
+ /* tiffcrop.c -- a port of tiffcp.c extended to include manipulations of
+ * the image data through additional options listed below
+@@ -2077,7 +2077,7 @@ update_output_file (TIFF **tiffout, char *mode, int autoindex,
+ return 1;
+ }
+
+- sprintf (filenum, "-%03d%s", findex, export_ext);
++ snprintf(filenum, sizeof(filenum), "-%03d%s", findex, export_ext);
+ filenum[14] = '\0';
+ strncat (exportname, filenum, 15);
+ }
+@@ -2230,8 +2230,8 @@ main(int argc, char* argv[])
+
+ /* dump.infilename is guaranteed to be NUL termimated and have 20 bytes
+ fewer than PATH_MAX */
+- memset (temp_filename, '\0', PATH_MAX + 1);
+- sprintf (temp_filename, "%s-read-%03d.%s", dump.infilename, dump_images,
++ snprintf(temp_filename, sizeof(temp_filename), "%s-read-%03d.%s",
++ dump.infilename, dump_images,
+ (dump.format == DUMP_TEXT) ? "txt" : "raw");
+ if ((dump.infile = fopen(temp_filename, dump.mode)) == NULL)
+ {
+@@ -2249,8 +2249,8 @@ main(int argc, char* argv[])
+
+ /* dump.outfilename is guaranteed to be NUL termimated and have 20 bytes
+ fewer than PATH_MAX */
+- memset (temp_filename, '\0', PATH_MAX + 1);
+- sprintf (temp_filename, "%s-write-%03d.%s", dump.outfilename, dump_images,
++ snprintf(temp_filename, sizeof(temp_filename), "%s-write-%03d.%s",
++ dump.outfilename, dump_images,
+ (dump.format == DUMP_TEXT) ? "txt" : "raw");
+ if ((dump.outfile = fopen(temp_filename, dump.mode)) == NULL)
+ {
+diff --git a/tools/tiffdither.c b/tools/tiffdither.c
+index dee2a02..a0cb857 100644
+--- a/tools/tiffdither.c
++++ b/tools/tiffdither.c
+@@ -1,4 +1,4 @@
+-/* $Id: tiffdither.c,v 1.9.2.1 2010-06-08 18:50:44 bfriesen Exp $ */
++/* $Id: tiffdither.c,v 1.9.2.2 2013-05-02 14:44:45 tgl Exp $ */
+
+ /*
+ * Copyright (c) 1988-1997 Sam Leffler
+@@ -256,7 +256,7 @@ main(int argc, char* argv[])
+ TIFFSetField(out, TIFFTAG_FILLORDER, fillorder);
+ else
+ CopyField(TIFFTAG_FILLORDER, shortv);
+- sprintf(thing, "Dithered B&W version of %s", argv[optind]);
++ snprintf(thing, sizeof(thing), "Dithered B&W version of %s", argv[optind]);
+ TIFFSetField(out, TIFFTAG_IMAGEDESCRIPTION, thing);
+ CopyField(TIFFTAG_PHOTOMETRIC, shortv);
+ CopyField(TIFFTAG_ORIENTATION, shortv);