--- tiff-v3.5.7/libtiff/tif_dirread.c.alt-bound2	2004-10-13 10:35:03.567542000 -0400
+++ tiff-v3.5.7/libtiff/tif_dirread.c	2004-10-13 10:41:04.171576000 -0400
@@ -564,19 +564,29 @@
 	tif->tif_curstrip = (tstrip_t) -1;
 	tif->tif_col = (uint32) -1;
 	tif->tif_curtile = (ttile_t) -1;
-	tif->tif_tilesize = TIFFTileSize(tif);
+	tif->tif_tilesize = (ttile_t) -1;
 	tif->tif_scanlinesize = TIFFScanlineSize(tif);
 
-	if (!tif->tif_tilesize) {
-		TIFFError("TIFFReadDirectory", "%s: cannot handle zero tile size",
-			  tif->tif_name);
-		return (0);
-	}
 	if (!tif->tif_scanlinesize) {
 		TIFFError("TIFFReadDirectory", "%s: cannot handle zero scanline size",
 			  tif->tif_name);
 		return (0);
 	}
+
+ 	if (isTiled(tif)) {
+ 		tif->tif_tilesize = TIFFTileSize(tif);
+ 		if (!tif->tif_tilesize) {
+ 			TIFFError("TIFFReadDirectory", "%s: cannot handle zero tile size",
+ 				  tif->tif_name);
+ 			return (0);
+ 		}
+ 	} else {
+ 		if (!TIFFStripSize(tif)) {
+ 			TIFFError("TIFFReadDirectory", "%s: cannot handle zero strip size",
+ 				  tif->tif_name);
+ 			return (0);
+ 		}
+ 	}
 	return (1);
 bad:
 	if (dir)
--- tiff-v3.5.7/libtiff/tif_jpeg.c.alt-bound2	2001-07-20 11:00:35.000000000 -0400
+++ tiff-v3.5.7/libtiff/tif_jpeg.c	2004-10-13 10:35:03.690419000 -0400
@@ -1330,7 +1330,7 @@
 		 * Must recalculate cached tile size
 		 * in case sampling state changed.
 		 */
-		tif->tif_tilesize = TIFFTileSize(tif);
+		tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
 		return (1);			/* pseudo tag */
 	case TIFFTAG_JPEGTABLESMODE:
 		sp->jpegtablesmode = va_arg(ap, int);
--- tiff-v3.5.7/libtiff/tif_luv.c.alt-bound2	2004-10-13 10:35:03.606503000 -0400
+++ tiff-v3.5.7/libtiff/tif_luv.c	2004-10-13 10:35:03.700409000 -0400
@@ -1508,7 +1508,7 @@
 		/*
 		 * Must recalculate sizes should bits/sample change.
 		 */
-		tif->tif_tilesize = TIFFTileSize(tif);
+		tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
 		tif->tif_scanlinesize = TIFFScanlineSize(tif);
 		return (1);
 	case TIFFTAG_SGILOGENCODE:
--- tiff-v3.5.7/libtiff/tif_ojpeg.c.alt-bound2	2001-09-24 14:54:58.000000000 -0400
+++ tiff-v3.5.7/libtiff/tif_ojpeg.c	2004-10-13 10:35:03.711397000 -0400
@@ -1810,7 +1810,7 @@
 
           if ((tif->tif_flags ^ v32) & TIFF_UPSAMPLED)
             {
-              tif->tif_tilesize = TIFFTileSize(tif);
+              tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
               tif->tif_flags |= TIFF_DIRTYDIRECT;
             };
           return 1;
--- tiff-v3.5.7/libtiff/tif_pixarlog.c.alt-bound2	2004-10-13 10:35:03.502606000 -0400
+++ tiff-v3.5.7/libtiff/tif_pixarlog.c	2004-10-13 10:35:03.722386000 -0400
@@ -1235,7 +1235,7 @@
 	/*
 	 * Must recalculate sizes should bits/sample change.
 	 */
-	tif->tif_tilesize = TIFFTileSize(tif);
+	tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
 	tif->tif_scanlinesize = TIFFScanlineSize(tif);
 	result = 1;		/* NB: pseudo tag */
 	break;
--- tiff-v3.5.7/libtiff/tif_write.c.alt-bound2	2004-10-13 10:35:03.528581000 -0400
+++ tiff-v3.5.7/libtiff/tif_write.c	2004-10-13 10:35:03.731378000 -0400
@@ -511,7 +511,7 @@
 		    tif->tif_name, isTiled(tif) ? "tile" : "strip");
 		return (0);
 	}
-	tif->tif_tilesize = TIFFTileSize(tif);
+	tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
 	tif->tif_scanlinesize = TIFFScanlineSize(tif);
 	tif->tif_flags |= TIFF_BEENWRITING;
 	return (1);
