tools/tiffcp.c:1542: error: Integer Overflow L2
  ([0, 4294967294] + [0, 4294967294]):unsigned32 by call to `TIFFWriteEncodedStrip`.

tools/tiffcp.c:1518:1: Parameter `out->tif_dir.td_imagelength`
1516. }
1517. 
1518. DECLAREwriteFunc(writeBufferToSeparateStrips)
      ^
1519. {
1520. 	uint32 rowsize = imagewidth * spp;

tools/tiffcp.c:1522:22: Call
1520. 	uint32 rowsize = imagewidth * spp;
1521. 	uint32 rowsperstrip;
1522. 	tsize_t stripsize = TIFFStripSize(out);
                           ^
1523. 	tdata_t obuf;
1524. 	tstrip_t strip = 0;

libtiff/tif_strip.c:201:1: Parameter `tif->tif_dir.td_imagelength`
  199. 	return (TIFFVStripSize64(tif, rps));
  200. }
  201. tmsize_t
       ^
  202. TIFFStripSize(TIFF* tif)
  203. {

libtiff/tif_strip.c:206:4: Call
  204. 	static const char module[] = "TIFFStripSize";
  205. 	uint64 m;
  206. 	m=TIFFStripSize64(tif);
          ^
  207. 	return _TIFFCastUInt64ToSSize(tif, m, module);
  208. }

libtiff/tif_strip.c:192:1: Parameter `tif->tif_dir.td_imagelength`
    190.  * to hold the strip.
    191.  */
    192. uint64
         ^
    193. TIFFStripSize64(TIFF* tif)
    194. {

tools/tiffcp.c:1542:8: Call
1540. 			    obuf, (uint8*) buf + row*rowsize + s,
1541. 			    nrows, imagewidth, 0, 0, spp, 1);
1542. 			if (TIFFWriteEncodedStrip(out, strip++, obuf, stripsize) < 0) {
             ^
1543. 				TIFFError(TIFFFileName(out),
1544. 				    "Error, can't write strip %u",

libtiff/tif_write.c:211:1: Parameter `tif->tif_dir.td_imagelength`
  209.  * NB: Image length must be setup before writing.
  210.  */
  211. tmsize_t
       ^
  212. TIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc)
  213. {

libtiff/tif_write.c:218:7: Call
  216. 	uint16 sample;
  217. 
  218. 	if (!WRITECHECKSTRIPS(tif, module))
             ^
  219. 		return ((tmsize_t) -1);
  220. 	/*

libtiff/tif_write.c:564:1: Parameter `tif->tif_dir.td_imagelength`
    562.  * that important information is not changed.
    563.  */
    564. int
         ^
    565. TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
    566. {

libtiff/tif_write.c:611:48: Call
    609. 		}
    610. 	}
    611. 	if (tif->tif_dir.td_stripoffset_p == NULL && !TIFFSetupStrips(tif)) {
                                                        ^
    612. 		tif->tif_dir.td_nstrips = 0;
    613. 		TIFFErrorExt(tif->tif_clientdata, module, "No space for %s arrays",

libtiff/tif_write.c:522:1: Parameter `tif->tif_dir.td_imagelength`
      520.     (TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0)
      521. 
      522. int
           ^
      523. TIFFSetupStrips(TIFF* tif)
      524. {

libtiff/tif_write.c:530:29: Call
      528. 		td->td_stripsperimage =
      529. 		    isUnspecified(tif, FIELD_TILEDIMENSIONS) ?
      530. 			td->td_samplesperpixel : TIFFNumberOfTiles(tif);
                                       ^
      531. 	else
      532. 		td->td_stripsperimage =

libtiff/tif_tile.c:112:1: <LHS trace>
110.  * Compute how many tiles are in an image.
111.  */
112. uint32
     ^
113. TIFFNumberOfTiles(TIFF* tif)
114. {

libtiff/tif_tile.c:112:1: Parameter `tif->tif_dir.td_imagelength`
        110.  * Compute how many tiles are in an image.
        111.  */
        112. uint32
             ^
        113. TIFFNumberOfTiles(TIFF* tif)
        114. {

libtiff/tif_tile.c:112:1: <RHS trace>
110.  * Compute how many tiles are in an image.
111.  */
112. uint32
     ^
113. TIFFNumberOfTiles(TIFF* tif)
114. {

libtiff/tif_tile.c:112:1: Parameter `tif->tif_dir.td_imagelength`
        110.  * Compute how many tiles are in an image.
        111.  */
        112. uint32
             ^
        113. TIFFNumberOfTiles(TIFF* tif)
        114. {

libtiff/tif_tile.c:129:6: Binary operation: ([0, 4294967294] + [0, 4294967294]):unsigned32 by call to `TIFFWriteEncodedStrip` 
        127. 	ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :
        128. 	    _TIFFMultiply32(tif, _TIFFMultiply32(tif, TIFFhowmany_32(td->td_imagewidth, dx),
        129. 	    TIFFhowmany_32(td->td_imagelength, dy),
                  ^
        130. 	    "TIFFNumberOfTiles"),
        131. 	    TIFFhowmany_32(td->td_imagedepth, dz), "TIFFNumberOfTiles");

uint32
TIFFNumberOfTiles(TIFF* tif)
{
	TIFFDirectory *td = &tif->tif_dir;
	uint32 dx = td->td_tilewidth;
	uint32 dy = td->td_tilelength;
	uint32 dz = td->td_tiledepth;
	uint32 ntiles;
	if (dx == (uint32) -1)
		dx = td->td_imagewidth;
	if (dy == (uint32) -1)
		dy = td->td_imagelength;
	if (dz == (uint32) -1)
		dz = td->td_imagedepth;
	ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :
	    _TIFFMultiply32(tif, _TIFFMultiply32(tif, TIFFhowmany_32(td->td_imagewidth, dx),
	    TIFFhowmany_32(td->td_imagelength, dy),
	    "TIFFNumberOfTiles"),
	    TIFFhowmany_32(td->td_imagedepth, dz), "TIFFNumberOfTiles");
	if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
		ntiles = _TIFFMultiply32(tif, ntiles, td->td_samplesperpixel,
		    "TIFFNumberOfTiles");
	return (ntiles);
}
['DECLAREwriteFunc(writeBufferToSeparateStrips)\n{\n\tuint32 rowsize = imagewidth * spp;\n\tuint32 rowsperstrip;\n\ttsize_t stripsize = TIFFStripSize(out);\n\ttdata_t obuf;\n\ttstrip_t strip = 0;\n\ttsample_t s;\n\tobuf = _TIFFmalloc(stripsize);\n\tif (obuf == NULL)\n\t\treturn (0);\n\t_TIFFmemset(obuf, 0, stripsize);\n\t(void) TIFFGetFieldDefaulted(out, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);\n\tfor (s = 0; s < spp; s++) {\n\t\tuint32 row;\n\t\tfor (row = 0; row < imagelength; row += rowsperstrip) {\n\t\t\tuint32 nrows = (row+rowsperstrip > imagelength) ?\n\t\t\t    imagelength-row : rowsperstrip;\n\t\t\ttsize_t stripsize = TIFFVStripSize(out, nrows);\n\t\t\tcpContigBufToSeparateBuf(\n\t\t\t    obuf, (uint8*) buf + row*rowsize + s,\n\t\t\t    nrows, imagewidth, 0, 0, spp, 1);\n\t\t\tif (TIFFWriteEncodedStrip(out, strip++, obuf, stripsize) < 0) {\n\t\t\t\tTIFFError(TIFFFileName(out),\n\t\t\t\t    "Error, can\'t write strip %u",\n\t\t\t\t    strip - 1);\n\t\t\t\t_TIFFfree(obuf);\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t}\n\t_TIFFfree(obuf);\n\treturn 1;\n}', 'tmsize_t\nTIFFStripSize(TIFF* tif)\n{\n\tstatic const char module[] = "TIFFStripSize";\n\tuint64 m;\n\tm=TIFFStripSize64(tif);\n\treturn _TIFFCastUInt64ToSSize(tif, m, module);\n}', 'uint64\nTIFFStripSize64(TIFF* tif)\n{\n\tTIFFDirectory* td = &tif->tif_dir;\n\tuint32 rps = td->td_rowsperstrip;\n\tif (rps > td->td_imagelength)\n\t\trps = td->td_imagelength;\n\treturn (TIFFVStripSize64(tif, rps));\n}', 'tmsize_t\nTIFFWriteEncodedStrip(TIFF* tif, uint32 strip, void* data, tmsize_t cc)\n{\n\tstatic const char module[] = "TIFFWriteEncodedStrip";\n\tTIFFDirectory *td = &tif->tif_dir;\n\tuint16 sample;\n\tif (!WRITECHECKSTRIPS(tif, module))\n\t\treturn ((tmsize_t) -1);\n\tif (strip >= td->td_nstrips) {\n\t\tif (td->td_planarconfig == PLANARCONFIG_SEPARATE) {\n\t\t\tTIFFErrorExt(tif->tif_clientdata, module,\n\t\t\t    "Can not grow image by strips when using separate planes");\n\t\t\treturn ((tmsize_t) -1);\n\t\t}\n\t\tif (!TIFFGrowStrips(tif, 1, module))\n\t\t\treturn ((tmsize_t) -1);\n\t\ttd->td_stripsperimage =\n\t\t    TIFFhowmany_32(td->td_imagelength, td->td_rowsperstrip);\n\t}\n\tif (!BUFFERCHECK(tif))\n\t\treturn ((tmsize_t) -1);\n        tif->tif_flags |= TIFF_BUF4WRITE;\n\ttif->tif_curstrip = strip;\n\tif( !_TIFFReserveLargeEnoughWriteBuffer(tif, strip) ) {\n            return ((tmsize_t)(-1));\n        }\n        tif->tif_rawcc = 0;\n        tif->tif_rawcp = tif->tif_rawdata;\n        if (td->td_stripsperimage == 0) {\n                TIFFErrorExt(tif->tif_clientdata, module, "Zero strips per image");\n                return ((tmsize_t) -1);\n        }\n\ttif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;\n\tif ((tif->tif_flags & TIFF_CODERSETUP) == 0) {\n\t\tif (!(*tif->tif_setupencode)(tif))\n\t\t\treturn ((tmsize_t) -1);\n\t\ttif->tif_flags |= TIFF_CODERSETUP;\n\t}\n\ttif->tif_flags &= ~TIFF_POSTENCODE;\n    if( td->td_compression == COMPRESSION_NONE )\n    {\n        tif->tif_postdecode( tif, (uint8*) data, cc );\n        if (!isFillOrder(tif, td->td_fillorder) &&\n            (tif->tif_flags & TIFF_NOBITREV) == 0)\n            TIFFReverseBits((uint8*) data, cc);\n        if (cc > 0 &&\n            !TIFFAppendToStrip(tif, strip, (uint8*) data, cc))\n            return ((tmsize_t) -1);\n        return (cc);\n    }\n\tsample = (uint16)(strip / td->td_stripsperimage);\n\tif (!(*tif->tif_preencode)(tif, sample))\n\t\treturn ((tmsize_t) -1);\n\ttif->tif_postdecode( tif, (uint8*) data, cc );\n\tif (!(*tif->tif_encodestrip)(tif, (uint8*) data, cc, sample))\n\t\treturn ((tmsize_t) -1);\n\tif (!(*tif->tif_postencode)(tif))\n\t\treturn ((tmsize_t) -1);\n\tif (!isFillOrder(tif, td->td_fillorder) &&\n\t    (tif->tif_flags & TIFF_NOBITREV) == 0)\n\t\tTIFFReverseBits(tif->tif_rawdata, tif->tif_rawcc);\n\tif (tif->tif_rawcc > 0 &&\n\t    !TIFFAppendToStrip(tif, strip, tif->tif_rawdata, tif->tif_rawcc))\n\t\treturn ((tmsize_t) -1);\n\ttif->tif_rawcc = 0;\n\ttif->tif_rawcp = tif->tif_rawdata;\n\treturn (cc);\n}', 'int\nTIFFWriteCheck(TIFF* tif, int tiles, const char* module)\n{\n\tif (tif->tif_mode == O_RDONLY) {\n\t\tTIFFErrorExt(tif->tif_clientdata, module, "File not open for writing");\n\t\treturn (0);\n\t}\n\tif (tiles ^ isTiled(tif)) {\n\t\tTIFFErrorExt(tif->tif_clientdata, module, tiles ?\n\t\t    "Can not write tiles to a striped image" :\n\t\t    "Can not write scanlines to a tiled image");\n\t\treturn (0);\n\t}\n        _TIFFFillStriles( tif );\n\tif (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {\n\t\tTIFFErrorExt(tif->tif_clientdata, module,\n\t\t    "Must set \\"ImageWidth\\" before writing data");\n\t\treturn (0);\n\t}\n\tif (tif->tif_dir.td_samplesperpixel == 1) {\n\t\tif (!TIFFFieldSet(tif, FIELD_PLANARCONFIG))\n                    tif->tif_dir.td_planarconfig = PLANARCONFIG_CONTIG;\n\t} else {\n\t\tif (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) {\n\t\t\tTIFFErrorExt(tif->tif_clientdata, module,\n\t\t\t    "Must set \\"PlanarConfiguration\\" before writing data");\n\t\t\treturn (0);\n\t\t}\n\t}\n\tif (tif->tif_dir.td_stripoffset_p == NULL && !TIFFSetupStrips(tif)) {\n\t\ttif->tif_dir.td_nstrips = 0;\n\t\tTIFFErrorExt(tif->tif_clientdata, module, "No space for %s arrays",\n\t\t    isTiled(tif) ? "tile" : "strip");\n\t\treturn (0);\n\t}\n\tif (isTiled(tif))\n\t{\n\t\ttif->tif_tilesize = TIFFTileSize(tif);\n\t\tif (tif->tif_tilesize == 0)\n\t\t\treturn (0);\n\t}\n\telse\n\t\ttif->tif_tilesize = (tmsize_t)(-1);\n\ttif->tif_scanlinesize = TIFFScanlineSize(tif);\n\tif (tif->tif_scanlinesize == 0)\n\t\treturn (0);\n\ttif->tif_flags |= TIFF_BEENWRITING;\n        if( tif->tif_dir.td_stripoffset_entry.tdir_tag != 0 &&\n            tif->tif_dir.td_stripoffset_entry.tdir_count == 0 &&\n            tif->tif_dir.td_stripoffset_entry.tdir_type == 0 &&\n            tif->tif_dir.td_stripoffset_entry.tdir_offset.toff_long8 == 0 &&\n            tif->tif_dir.td_stripbytecount_entry.tdir_tag != 0 &&\n            tif->tif_dir.td_stripbytecount_entry.tdir_count == 0 &&\n            tif->tif_dir.td_stripbytecount_entry.tdir_type == 0 &&\n            tif->tif_dir.td_stripbytecount_entry.tdir_offset.toff_long8 == 0 &&\n            !(tif->tif_flags & TIFF_DIRTYDIRECT)  )\n        {\n            TIFFForceStrileArrayWriting(tif);\n        }\n\treturn (1);\n}', 'int\nTIFFSetupStrips(TIFF* tif)\n{\n\tTIFFDirectory* td = &tif->tif_dir;\n\tif (isTiled(tif))\n\t\ttd->td_stripsperimage =\n\t\t    isUnspecified(tif, FIELD_TILEDIMENSIONS) ?\n\t\t\ttd->td_samplesperpixel : TIFFNumberOfTiles(tif);\n\telse\n\t\ttd->td_stripsperimage =\n\t\t    isUnspecified(tif, FIELD_ROWSPERSTRIP) ?\n\t\t\ttd->td_samplesperpixel : TIFFNumberOfStrips(tif);\n\ttd->td_nstrips = td->td_stripsperimage;\n\tif (td->td_planarconfig == PLANARCONFIG_SEPARATE)\n\t\ttd->td_stripsperimage /= td->td_samplesperpixel;\n\ttd->td_stripoffset_p = (uint64 *)\n            _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64),\n                             "for \\"StripOffsets\\" array");\n\ttd->td_stripbytecount_p = (uint64 *)\n            _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint64),\n                             "for \\"StripByteCounts\\" array");\n\tif (td->td_stripoffset_p == NULL || td->td_stripbytecount_p == NULL)\n\t\treturn (0);\n\t_TIFFmemset(td->td_stripoffset_p, 0, td->td_nstrips*sizeof (uint64));\n\t_TIFFmemset(td->td_stripbytecount_p, 0, td->td_nstrips*sizeof (uint64));\n\tTIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);\n\tTIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);\n\treturn (1);\n}', 'uint32\nTIFFNumberOfTiles(TIFF* tif)\n{\n\tTIFFDirectory *td = &tif->tif_dir;\n\tuint32 dx = td->td_tilewidth;\n\tuint32 dy = td->td_tilelength;\n\tuint32 dz = td->td_tiledepth;\n\tuint32 ntiles;\n\tif (dx == (uint32) -1)\n\t\tdx = td->td_imagewidth;\n\tif (dy == (uint32) -1)\n\t\tdy = td->td_imagelength;\n\tif (dz == (uint32) -1)\n\t\tdz = td->td_imagedepth;\n\tntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :\n\t    _TIFFMultiply32(tif, _TIFFMultiply32(tif, TIFFhowmany_32(td->td_imagewidth, dx),\n\t    TIFFhowmany_32(td->td_imagelength, dy),\n\t    "TIFFNumberOfTiles"),\n\t    TIFFhowmany_32(td->td_imagedepth, dz), "TIFFNumberOfTiles");\n\tif (td->td_planarconfig == PLANARCONFIG_SEPARATE)\n\t\tntiles = _TIFFMultiply32(tif, ntiles, td->td_samplesperpixel,\n\t\t    "TIFFNumberOfTiles");\n\treturn (ntiles);\n}']