summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2020-01-23 20:40:53 +0100
committerEven Rouault <even.rouault@spatialys.com>2020-01-23 20:40:53 +0100
commitf5e1d765eb8835cae0a10e2d7e23d3dca3507d07 (patch)
tree2371715531ab88ebfb3425abc78c4c4b8463ba30
parent3db0ff91bc6db20fc4cb035be366a9bbb4e701cf (diff)
downloadlibtiff-git-f5e1d765eb8835cae0a10e2d7e23d3dca3507d07.tar.gz
Adjust previous fix to avoid undue warning in some situations triggered by GDAL
-rw-r--r--libtiff/tif_dirread.c30
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),