summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEven Rouault <even.rouault@spatialys.com>2022-12-12 21:20:59 +0100
committerEven Rouault <even.rouault@spatialys.com>2022-12-12 21:20:59 +0100
commit0530835da45a8b7dd11a1251425a6b5a74639a3a (patch)
tree88e152a9c77854d375c350bc3fb67b8401829510
parent8f38557ef614f9af8b95ed164412e6157d1a5df8 (diff)
downloadlibtiff-git-0530835da45a8b7dd11a1251425a6b5a74639a3a.tar.gz
Add a TIFF_MAX_DIR_COUNT public #define
-rw-r--r--libtiff/tif_dirread.c13
-rw-r--r--libtiff/tiffio.h5
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"
{