private bool byteCountLooksBad(TiffDirectory td)
{
/*
* Assume we have wrong StripByteCount value (in case of single strip) in
* following cases:
* - it is equal to zero along with StripOffset;
* - it is larger than file itself (in case of uncompressed image);
* - it is smaller than the size of the bytes per row multiplied on the
* number of rows. The last case should not be checked in the case of
* writing new image, because we may do not know the exact strip size
* until the whole image will be written and directory dumped out.
*/
return
(
(td.td_stripbytecount[0] == 0 && td.td_stripoffset[0] != 0) ||
(td.td_compression == Compression.NONE && td.td_stripbytecount[0] > getFileSize() - td.td_stripoffset[0]) ||
(m_mode == O_RDONLY && td.td_compression == Compression.NONE && td.td_stripbytecount[0] < ScanlineSize() * td.td_imagelength)
);
}