diff options
Diffstat (limited to 'main/tiff/libtiff-negsize-3.9.patch')
-rw-r--r-- | main/tiff/libtiff-negsize-3.9.patch | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/main/tiff/libtiff-negsize-3.9.patch b/main/tiff/libtiff-negsize-3.9.patch new file mode 100644 index 0000000000..75a42fabc7 --- /dev/null +++ b/main/tiff/libtiff-negsize-3.9.patch @@ -0,0 +1,161 @@ +Index: libtiff/tif_strip.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_strip.c,v +retrieving revision 1.19.2.3 +diff -c -r1.19.2.3 tif_strip.c +*** ./libtiff/tif_strip.c 15 Dec 2010 00:50:30 -0000 1.19.2.3 +--- ./libtiff/tif_strip.c 17 Apr 2012 18:14:22 -0000 +*************** +*** 107,112 **** +--- 107,113 ---- + TIFFVStripSize(TIFF* tif, uint32 nrows) + { + TIFFDirectory *td = &tif->tif_dir; ++ uint32 stripsize; + + if (nrows == (uint32) -1) + nrows = td->td_imagelength; +*************** +*** 122,128 **** + * YCbCr data for the extended image. + */ + uint16 ycbcrsubsampling[2]; +! tsize_t w, scanline, samplingarea; + + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, + ycbcrsubsampling + 0, +--- 123,129 ---- + * YCbCr data for the extended image. + */ + uint16 ycbcrsubsampling[2]; +! uint32 w, scanline, samplingarea; + + TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, + ycbcrsubsampling + 0, +*************** +*** 141,153 **** + nrows = TIFFroundup(nrows, ycbcrsubsampling[1]); + /* NB: don't need TIFFhowmany here 'cuz everything is rounded */ + scanline = multiply(tif, nrows, scanline, "TIFFVStripSize"); +! return ((tsize_t) + summarize(tif, scanline, + multiply(tif, 2, scanline / samplingarea, +! "TIFFVStripSize"), "TIFFVStripSize")); + } else +! return ((tsize_t) multiply(tif, nrows, TIFFScanlineSize(tif), +! "TIFFVStripSize")); + } + + +--- 142,160 ---- + nrows = TIFFroundup(nrows, ycbcrsubsampling[1]); + /* NB: don't need TIFFhowmany here 'cuz everything is rounded */ + scanline = multiply(tif, nrows, scanline, "TIFFVStripSize"); +! stripsize = + summarize(tif, scanline, + multiply(tif, 2, scanline / samplingarea, +! "TIFFVStripSize"), "TIFFVStripSize"); + } else +! stripsize = multiply(tif, nrows, TIFFScanlineSize(tif), +! "TIFFVStripSize"); +! /* Because tsize_t is signed, we might have conversion overflow */ +! if (((tsize_t) stripsize) < 0) { +! TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", "TIFFVStripSize"); +! stripsize = 0; +! } +! return (tsize_t) stripsize; + } + + +Index: libtiff/tif_tile.c +=================================================================== +RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_tile.c,v +retrieving revision 1.12.2.1 +diff -c -r1.12.2.1 tif_tile.c +*** ./libtiff/tif_tile.c 8 Jun 2010 18:50:43 -0000 1.12.2.1 +--- ./libtiff/tif_tile.c 17 Apr 2012 18:14:22 -0000 +*************** +*** 174,180 **** + TIFFTileRowSize(TIFF* tif) + { + TIFFDirectory *td = &tif->tif_dir; +! tsize_t rowsize; + + if (td->td_tilelength == 0 || td->td_tilewidth == 0) + return ((tsize_t) 0); +--- 174,180 ---- + TIFFTileRowSize(TIFF* tif) + { + TIFFDirectory *td = &tif->tif_dir; +! uint32 rowsize; + + if (td->td_tilelength == 0 || td->td_tilewidth == 0) + return ((tsize_t) 0); +*************** +*** 193,199 **** + TIFFVTileSize(TIFF* tif, uint32 nrows) + { + TIFFDirectory *td = &tif->tif_dir; +! tsize_t tilesize; + + if (td->td_tilelength == 0 || td->td_tilewidth == 0 || + td->td_tiledepth == 0) +--- 193,199 ---- + TIFFVTileSize(TIFF* tif, uint32 nrows) + { + TIFFDirectory *td = &tif->tif_dir; +! uint32 tilesize; + + if (td->td_tilelength == 0 || td->td_tilewidth == 0 || + td->td_tiledepth == 0) +*************** +*** 209,220 **** + * horizontal/vertical subsampling area include + * YCbCr data for the extended image. + */ +! tsize_t w = + TIFFroundup(td->td_tilewidth, td->td_ycbcrsubsampling[0]); +! tsize_t rowsize = + TIFFhowmany8(multiply(tif, w, td->td_bitspersample, + "TIFFVTileSize")); +! tsize_t samplingarea = + td->td_ycbcrsubsampling[0]*td->td_ycbcrsubsampling[1]; + if (samplingarea == 0) { + TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Invalid YCbCr subsampling"); +--- 209,220 ---- + * horizontal/vertical subsampling area include + * YCbCr data for the extended image. + */ +! uint32 w = + TIFFroundup(td->td_tilewidth, td->td_ycbcrsubsampling[0]); +! uint32 rowsize = + TIFFhowmany8(multiply(tif, w, td->td_bitspersample, + "TIFFVTileSize")); +! uint32 samplingarea = + td->td_ycbcrsubsampling[0]*td->td_ycbcrsubsampling[1]; + if (samplingarea == 0) { + TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Invalid YCbCr subsampling"); +*************** +*** 230,237 **** + } else + tilesize = multiply(tif, nrows, TIFFTileRowSize(tif), + "TIFFVTileSize"); +! return ((tsize_t) +! multiply(tif, tilesize, td->td_tiledepth, "TIFFVTileSize")); + } + + /* +--- 230,242 ---- + } else + tilesize = multiply(tif, nrows, TIFFTileRowSize(tif), + "TIFFVTileSize"); +! tilesize = multiply(tif, tilesize, td->td_tiledepth, "TIFFVTileSize"); +! /* Because tsize_t is signed, we might have conversion overflow */ +! if (((tsize_t) tilesize) < 0) { +! TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", "TIFFVTileSize"); +! tilesize = 0; +! } +! return (tsize_t) tilesize; + } + + /* |