| diff --git a/third_party/libtiff/tif_dirread.c b/third_party/libtiff/tif_dirread.c |
| index 5e62e8131..521dbf0a4 100644 |
| --- a/third_party/libtiff/tif_dirread.c |
| +++ b/third_party/libtiff/tif_dirread.c |
| @@ -41,6 +41,7 @@ |
| |
| #include "tiffiop.h" |
| #include <float.h> |
| +#include <limits.h> |
| #include <stdlib.h> |
| |
| #define IGNORE 0 /* tag placeholder used below */ |
| @@ -3743,6 +3744,13 @@ TIFFReadDirectory(TIFF* tif) |
| isTiled(tif) ? "tiles" : "strips"); |
| goto bad; |
| } |
| + if (tif->tif_dir.td_nstrips > INT_MAX) { |
| + TIFFErrorExt(tif->tif_clientdata, module, |
| + "Cannot handle %u number of %s", |
| + tif->tif_dir.td_nstrips, |
| + isTiled(tif) ? "tiles" : "strips"); |
| + goto bad; |
| + } |
| tif->tif_dir.td_stripsperimage = tif->tif_dir.td_nstrips; |
| if (tif->tif_dir.td_planarconfig == PLANARCONFIG_SEPARATE) |
| tif->tif_dir.td_stripsperimage /= tif->tif_dir.td_samplesperpixel; |