fix crash with invalid files, strip chopping and deferred strile loading (gdal #4372)
This commit is contained in:
parent
ee5c8c505e
commit
7d9fbf6d9d
@ -1,5 +1,8 @@
|
|||||||
2011-12-07 Frank Warmerdam <warmerdam@pobox.com>
|
2011-12-07 Frank Warmerdam <warmerdam@pobox.com>
|
||||||
|
|
||||||
|
* libtiff/tif_dirread.c: fixes to deal with invalid files where
|
||||||
|
_TIFFFillStriles() fails, and we try to chop up strips (gdal #4372)
|
||||||
|
|
||||||
* libtiff/tif_dirread.c: fix error reporting when there is no
|
* libtiff/tif_dirread.c: fix error reporting when there is no
|
||||||
tag information struct and name (gdal #4373)
|
tag information struct and name (gdal #4373)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $Id: tif_dirread.c,v 1.170 2011-12-08 05:43:26 fwarmerdam Exp $ */
|
/* $Id: tif_dirread.c,v 1.171 2011-12-08 05:48:39 fwarmerdam Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988-1997 Sam Leffler
|
* Copyright (c) 1988-1997 Sam Leffler
|
||||||
@ -4026,7 +4026,11 @@ TIFFReadDirectory(TIFF* tif)
|
|||||||
(tif->tif_dir.td_nstrips==1)&&
|
(tif->tif_dir.td_nstrips==1)&&
|
||||||
(tif->tif_dir.td_compression==COMPRESSION_NONE)&&
|
(tif->tif_dir.td_compression==COMPRESSION_NONE)&&
|
||||||
((tif->tif_flags&(TIFF_STRIPCHOP|TIFF_ISTILED))==TIFF_STRIPCHOP))
|
((tif->tif_flags&(TIFF_STRIPCHOP|TIFF_ISTILED))==TIFF_STRIPCHOP))
|
||||||
|
{
|
||||||
|
if ( !_TIFFFillStriles(tif) || !tif->tif_dir.td_stripbytecount )
|
||||||
|
return 0;
|
||||||
ChopUpSingleUncompressedStrip(tif);
|
ChopUpSingleUncompressedStrip(tif);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clear the dirty directory flag.
|
* Clear the dirty directory flag.
|
||||||
@ -5459,8 +5463,6 @@ ChopUpSingleUncompressedStrip(TIFF* tif)
|
|||||||
uint64* newcounts;
|
uint64* newcounts;
|
||||||
uint64* newoffsets;
|
uint64* newoffsets;
|
||||||
|
|
||||||
_TIFFFillStriles(tif);
|
|
||||||
|
|
||||||
bytecount = td->td_stripbytecount[0];
|
bytecount = td->td_stripbytecount[0];
|
||||||
offset = td->td_stripoffset[0];
|
offset = td->td_stripoffset[0];
|
||||||
assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
|
assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
|
||||||
|
Loading…
Reference in New Issue
Block a user