diff options
author | Even Rouault <even.rouault@spatialys.com> | 2020-01-23 20:40:53 +0100 |
---|---|---|
committer | Even Rouault <even.rouault@spatialys.com> | 2020-01-23 20:40:53 +0100 |
commit | f5e1d765eb8835cae0a10e2d7e23d3dca3507d07 (patch) | |
tree | 2371715531ab88ebfb3425abc78c4c4b8463ba30 | |
parent | 3db0ff91bc6db20fc4cb035be366a9bbb4e701cf (diff) | |
download | libtiff-git-f5e1d765eb8835cae0a10e2d7e23d3dca3507d07.tar.gz |
Adjust previous fix to avoid undue warning in some situations triggered by GDAL
-rw-r--r-- | libtiff/tif_dirread.c | 30 |
1 files changed, 22 insertions, 8 deletions
diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c index be6fe24d..59037c91 100644 --- a/libtiff/tif_dirread.c +++ b/libtiff/tif_dirread.c @@ -3909,10 +3909,17 @@ TIFFReadDirectory(TIFF* tif) case TIFF_LONG8: break; default: - fip = TIFFFieldWithTag(tif,dp->tdir_tag); - TIFFWarningExt(tif->tif_clientdata,module, - "Invalid data type for tag %s", - fip ? fip->field_name : "unknown tagname"); + /* Warn except if directory typically created with TIFFDeferStrileArrayWriting() */ + if( !(tif->tif_mode == O_RDWR && + dp->tdir_count == 0 && + dp->tdir_type == 0 && + dp->tdir_offset.toff_long8 == 0) ) + { + fip = TIFFFieldWithTag(tif,dp->tdir_tag); + TIFFWarningExt(tif->tif_clientdata,module, + "Invalid data type for tag %s", + fip ? fip->field_name : "unknown tagname"); + } break; } _TIFFmemcpy( &(tif->tif_dir.td_stripoffset_entry), @@ -3927,10 +3934,17 @@ TIFFReadDirectory(TIFF* tif) case TIFF_LONG8: break; default: - fip = TIFFFieldWithTag(tif,dp->tdir_tag); - TIFFWarningExt(tif->tif_clientdata,module, - "Invalid data type for tag %s", - fip ? fip->field_name : "unknown tagname"); + /* Warn except if directory typically created with TIFFDeferStrileArrayWriting() */ + if( !(tif->tif_mode == O_RDWR && + dp->tdir_count == 0 && + dp->tdir_type == 0 && + dp->tdir_offset.toff_long8 == 0) ) + { + fip = TIFFFieldWithTag(tif,dp->tdir_tag); + TIFFWarningExt(tif->tif_clientdata,module, + "Invalid data type for tag %s", + fip ? fip->field_name : "unknown tagname"); + } break; } _TIFFmemcpy( &(tif->tif_dir.td_stripbytecount_entry), |