Use the spec-mandated default YCbCrSubSampling values in strip size calculations, if the YCBCRSUBSAMPLING tag hasn't been provided. See bug #603703. Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2215 diff -Naurp tiff-3.9.1/libtiff/tif_strip.c tiff-3.9.1.oden/libtiff/tif_strip.c --- tiff-3.9.1/libtiff/tif_strip.c 2006-03-25 13:04:35.000000000 -0500 +++ tiff-3.9.1.oden/libtiff/tif_strip.c 2010-08-05 10:51:52.000000000 -0400 @@ -124,9 +124,9 @@ TIFFVStripSize(TIFF* tif, uint32 nrows) uint16 ycbcrsubsampling[2]; tsize_t w, scanline, samplingarea; - TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING, - ycbcrsubsampling + 0, - ycbcrsubsampling + 1 ); + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, + ycbcrsubsampling + 0, + ycbcrsubsampling + 1); samplingarea = ycbcrsubsampling[0]*ycbcrsubsampling[1]; if (samplingarea == 0) { @@ -234,9 +234,9 @@ TIFFScanlineSize(TIFF* tif) && !isUpSampled(tif)) { uint16 ycbcrsubsampling[2]; - TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING, - ycbcrsubsampling + 0, - ycbcrsubsampling + 1); + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, + ycbcrsubsampling + 0, + ycbcrsubsampling + 1); if (ycbcrsubsampling[0] == 0) { TIFFErrorExt(tif->tif_clientdata, tif->tif_name, @@ -308,9 +308,9 @@ TIFFNewScanlineSize(TIFF* tif) && !isUpSampled(tif)) { uint16 ycbcrsubsampling[2]; - TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING, - ycbcrsubsampling + 0, - ycbcrsubsampling + 1); + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, + ycbcrsubsampling + 0, + ycbcrsubsampling + 1); if (ycbcrsubsampling[0]*ycbcrsubsampling[1] == 0) { TIFFErrorExt(tif->tif_clientdata, tif->tif_name,