diff options
author | Even Rouault <even.rouault@spatialys.com> | 2022-12-12 21:20:59 +0100 |
---|---|---|
committer | Even Rouault <even.rouault@spatialys.com> | 2022-12-12 21:20:59 +0100 |
commit | 0530835da45a8b7dd11a1251425a6b5a74639a3a (patch) | |
tree | 88e152a9c77854d375c350bc3fb67b8401829510 | |
parent | 8f38557ef614f9af8b95ed164412e6157d1a5df8 (diff) | |
download | libtiff-git-0530835da45a8b7dd11a1251425a6b5a74639a3a.tar.gz |
Add a TIFF_MAX_DIR_COUNT public #define
-rw-r--r-- | libtiff/tif_dirread.c | 13 | ||||
-rw-r--r-- | libtiff/tiffio.h | 5 |
2 files changed, 13 insertions, 5 deletions
diff --git a/libtiff/tif_dirread.c b/libtiff/tif_dirread.c index e2f563eb..799dbc5a 100644 --- a/libtiff/tif_dirread.c +++ b/libtiff/tif_dirread.c @@ -4079,7 +4079,8 @@ int TIFFReadDirectory(TIFF *tif) tif, tif->tif_curdir == 0xFFFFFFFFU ? 0 : tif->tif_curdir + 1, nextdiroff)) { - return 0; /* bad offset (IFD looping or more than 1048576 IFDs) */ + return 0; /* bad offset (IFD looping or more than TIFF_MAX_DIR_COUNT + IFDs) */ } dircount = TIFFFetchDirectory(tif, nextdiroff, &dir, &tif->tif_nextdiroff); if (!dircount) @@ -5397,10 +5398,11 @@ int _TIFFCheckDirNumberAndOffset(TIFF *tif, tdir_t dirn, uint64_t diroff) } /* Arbitrary (hopefully big enough) limit */ - if (tif->tif_dirnumber >= 1048576) + if (tif->tif_dirnumber >= TIFF_MAX_DIR_COUNT) { TIFFErrorExtR(tif, "_TIFFCheckDirNumberAndOffset", - "Cannot handle more than 1048576 TIFF directories"); + "Cannot handle more than %u TIFF directories", + TIFF_MAX_DIR_COUNT); return 0; } @@ -5447,10 +5449,11 @@ int _TIFFGetDirNumberFromOffset(TIFF *tif, uint64_t diroff, tdir_t *dirn) { if (diroff == 0) /* no more directories */ return 0; - if (tif->tif_dirnumber >= 1048576) + if (tif->tif_dirnumber >= TIFF_MAX_DIR_COUNT) { TIFFErrorExtR(tif, "_TIFFGetDirNumberFromOffset", - "Cannot handle more than 1048576 TIFF directories"); + "Cannot handle more than %u TIFF directories", + TIFF_MAX_DIR_COUNT); return 0; } diff --git a/libtiff/tiffio.h b/libtiff/tiffio.h index 4df57665..c6cb7779 100644 --- a/libtiff/tiffio.h +++ b/libtiff/tiffio.h @@ -277,6 +277,11 @@ typedef struct #define TIFF_ATTRIBUTE(x) /*nothing*/ #endif +/** Maximum number of TIFF IFDs that libtiff can iterate through in a file. */ +#ifndef TIFF_MAX_DIR_COUNT +#define TIFF_MAX_DIR_COUNT 1048576 +#endif + #if defined(c_plusplus) || defined(__cplusplus) extern "C" { |