|  | diff --git a/third_party/libtiff/tif_getimage.c b/third_party/libtiff/tif_getimage.c | 
|  | index fc554ccab..fff3f7fde 100644 | 
|  | --- a/third_party/libtiff/tif_getimage.c | 
|  | +++ b/third_party/libtiff/tif_getimage.c | 
|  | @@ -31,6 +31,7 @@ | 
|  | */ | 
|  | #include "tiffiop.h" | 
|  | #include <stdio.h> | 
|  | +#include <limits.h> | 
|  |  | 
|  | static int gtTileContig(TIFFRGBAImage*, uint32*, uint32, uint32); | 
|  | static int gtTileSeparate(TIFFRGBAImage*, uint32*, uint32, uint32); | 
|  | @@ -628,6 +629,7 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h) | 
|  | uint32 tw, th; | 
|  | unsigned char* buf = NULL; | 
|  | int32 fromskew, toskew; | 
|  | +    int64 safeskew; | 
|  | uint32 nrow; | 
|  | int ret = 1, flip; | 
|  | uint32 this_tw, tocol; | 
|  | @@ -648,19 +650,37 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h) | 
|  | flip = setorientation(img); | 
|  | if (flip & FLIP_VERTICALLY) { | 
|  | y = h - 1; | 
|  | -	    toskew = -(int32)(tw + w); | 
|  | +	    safeskew = 0; | 
|  | +	    safeskew -= tw; | 
|  | +	    safeskew -= w; | 
|  | } | 
|  | else { | 
|  | y = 0; | 
|  | -	    toskew = -(int32)(tw - w); | 
|  | +	    safeskew = 0; | 
|  | +	    safeskew -= tw; | 
|  | +	    safeskew +=w; | 
|  | } | 
|  |  | 
|  | +    if(safeskew > INT_MAX || safeskew < INT_MIN){ | 
|  | +       _TIFFfree(buf); | 
|  | +       TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", "Invalid skew"); | 
|  | +       return (0); | 
|  | +    } | 
|  | +    toskew = safeskew; | 
|  | + | 
|  | /* | 
|  | *	Leftmost tile is clipped on left side if col_offset > 0. | 
|  | */ | 
|  | leftmost_fromskew = img->col_offset % tw; | 
|  | leftmost_tw = tw - leftmost_fromskew; | 
|  | -    leftmost_toskew = toskew + leftmost_fromskew; | 
|  | +    safeskew = toskew; | 
|  | +    safeskew += leftmost_fromskew; | 
|  | +    if(safeskew > INT_MAX || safeskew < INT_MIN){ | 
|  | +       _TIFFfree(buf); | 
|  | +       TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", "Invalid skew"); | 
|  | +       return (0); | 
|  | +    } | 
|  | +    leftmost_toskew = safeskew; | 
|  | for (row = 0; ret != 0 && row < h; row += nrow) | 
|  | { | 
|  | rowstoread = th - (row + img->row_offset) % th; | 
|  | @@ -686,9 +706,24 @@ gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h) | 
|  | /* | 
|  | * 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; | 
|  | } | 
|  | (*put)(img, raster+y*w+tocol, tocol, y, this_tw, nrow, fromskew, this_toskew, buf + pos); | 
|  | tocol += this_tw; |