|  | diff --git a/third_party/libtiff/tif_getimage.c b/third_party/libtiff/tif_getimage.c | 
|  | index 41f7dfd77..8603ff026 100644 | 
|  | --- a/third_party/libtiff/tif_getimage.c | 
|  | +++ b/third_party/libtiff/tif_getimage.c | 
|  | @@ -723,6 +723,7 @@ static int gtTileContig(TIFFRGBAImage *img, uint32_t *raster, uint32_t w, | 
|  | uint32_t this_tw, tocol; | 
|  | int32_t this_toskew, leftmost_toskew; | 
|  | int32_t leftmost_fromskew; | 
|  | +    int64_t safeskew; | 
|  | uint32_t leftmost_tw; | 
|  | tmsize_t bufsize; | 
|  |  | 
|  | @@ -792,9 +793,28 @@ static int gtTileContig(TIFFRGBAImage *img, uint32_t *raster, uint32_t w, | 
|  | /* | 
|  | * Rightmost tile is clipped on right side. | 
|  | */ | 
|  | -                fromskew = tw - (w - tocol); | 
|  | +                safeskew = tw; | 
|  | +                safeskew -= w; | 
|  | +                safeskew += tocol; | 
|  | +                if (safeskew > INT_MAX || safeskew < INT_MIN) | 
|  | +                { | 
|  | +                    _TIFFfree(buf); | 
|  | +                    TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", | 
|  | +                                 "Invalid skew"); | 
|  | +                    return (0); | 
|  | +                } | 
|  | +                fromskew = safeskew; | 
|  | this_tw = tw - fromskew; | 
|  | -                this_toskew = toskew + fromskew; | 
|  | +                safeskew = toskew; | 
|  | +                safeskew += fromskew; | 
|  | +                if (safeskew > INT_MAX || safeskew < INT_MIN) | 
|  | +                { | 
|  | +                    _TIFFfree(buf); | 
|  | +                    TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", | 
|  | +                                 "Invalid skew"); | 
|  | +                    return (0); | 
|  | +                } | 
|  | +                this_toskew = safeskew; | 
|  | } | 
|  | tmsize_t roffset = (tmsize_t)y * w + tocol; | 
|  | (*put)(img, raster + roffset, tocol, y, this_tw, nrow, fromskew, |