Update to libtiff 3.9.5
This commit is contained in:
parent
0224c9c3f8
commit
2444d4596f
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
tiff-3.9.4.tar.gz
|
/tiff-3.9.5.tar.gz
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
Patch for bug #603081: failure to guard against bogus SamplesPerPixel
|
|
||||||
when converting a YCbCr image to RGB.
|
|
||||||
|
|
||||||
This patch duplicates into PickContigCase() a safety check that already
|
|
||||||
existed in PickSeparateCase().
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2216
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.2.orig/libtiff/tif_getimage.c tiff-3.9.2/libtiff/tif_getimage.c
|
|
||||||
--- tiff-3.9.2.orig/libtiff/tif_getimage.c 2009-08-30 12:21:46.000000000 -0400
|
|
||||||
+++ tiff-3.9.2/libtiff/tif_getimage.c 2010-06-11 12:06:47.000000000 -0400
|
|
||||||
@@ -2397,7 +2397,7 @@
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PHOTOMETRIC_YCBCR:
|
|
||||||
- if (img->bitspersample == 8)
|
|
||||||
+ if ((img->bitspersample==8) && (img->samplesperpixel==3))
|
|
||||||
{
|
|
||||||
if (initYCbCrConversion(img)!=0)
|
|
||||||
{
|
|
@ -1,27 +0,0 @@
|
|||||||
Protect against a fax VL(n) codeword commanding a move left. Without
|
|
||||||
this, a malicious input file can generate an indefinitely large series
|
|
||||||
of runs without a0 ever reaching the right margin, thus overrunning
|
|
||||||
our buffer of run lengths. Per CVE-2011-0192. This is a modified
|
|
||||||
version of a patch proposed by Drew Yao of Apple Product Security.
|
|
||||||
It adds an unexpected() report, and disallows the equality case except
|
|
||||||
for the first run of a line, since emitting a run without increasing a0
|
|
||||||
still allows buffer overrun. (We have to allow it for the first run to
|
|
||||||
cover the case of encoding a zero-length run at start of line using VL.)
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/libtiff/tif_fax3.h tiff-3.9.4/libtiff/tif_fax3.h
|
|
||||||
--- tiff-3.9.4.orig/libtiff/tif_fax3.h 2010-06-08 14:50:42.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/libtiff/tif_fax3.h 2011-03-10 12:11:20.850839162 -0500
|
|
||||||
@@ -478,6 +478,12 @@
|
|
||||||
break; \
|
|
||||||
case S_VL: \
|
|
||||||
CHECK_b1; \
|
|
||||||
+ if (b1 <= (int) (a0 + TabEnt->Param)) { \
|
|
||||||
+ if (b1 < (int) (a0 + TabEnt->Param) || pa != thisrun) { \
|
|
||||||
+ unexpected("VL", a0); \
|
|
||||||
+ goto eol2d; \
|
|
||||||
+ } \
|
|
||||||
+ } \
|
|
||||||
SETVALUE(b1 - a0 - TabEnt->Param); \
|
|
||||||
b1 -= *--pb; \
|
|
||||||
break; \
|
|
@ -1,53 +0,0 @@
|
|||||||
Upstream patch for CVE-2011-1167, heap-based buffer overflow in thunder
|
|
||||||
decoder (ZDI-CAN-1004).
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/libtiff/tif_thunder.c tiff-3.9.4/libtiff/tif_thunder.c
|
|
||||||
--- tiff-3.9.4.orig/libtiff/tif_thunder.c 2010-06-08 14:50:43.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/libtiff/tif_thunder.c 2011-03-18 12:17:13.635796403 -0400
|
|
||||||
@@ -55,12 +55,32 @@
|
|
||||||
static const int twobitdeltas[4] = { 0, 1, 0, -1 };
|
|
||||||
static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 };
|
|
||||||
|
|
||||||
-#define SETPIXEL(op, v) { \
|
|
||||||
- lastpixel = (v) & 0xf; \
|
|
||||||
- if (npixels++ & 1) \
|
|
||||||
- *op++ |= lastpixel; \
|
|
||||||
- else \
|
|
||||||
+#define SETPIXEL(op, v) { \
|
|
||||||
+ lastpixel = (v) & 0xf; \
|
|
||||||
+ if ( npixels < maxpixels ) \
|
|
||||||
+ { \
|
|
||||||
+ if (npixels++ & 1) \
|
|
||||||
+ *op++ |= lastpixel; \
|
|
||||||
+ else \
|
|
||||||
op[0] = (tidataval_t) (lastpixel << 4); \
|
|
||||||
+ } \
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+static int
|
|
||||||
+ThunderSetupDecode(TIFF* tif)
|
|
||||||
+{
|
|
||||||
+ static const char module[] = "ThunderSetupDecode";
|
|
||||||
+
|
|
||||||
+ if( tif->tif_dir.td_bitspersample != 4 )
|
|
||||||
+ {
|
|
||||||
+ TIFFErrorExt(tif->tif_clientdata, module,
|
|
||||||
+ "Wrong bitspersample value (%d), Thunder decoder only supports 4bits per sample.",
|
|
||||||
+ (int) tif->tif_dir.td_bitspersample );
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+
|
|
||||||
+ return (1);
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
@@ -151,6 +171,7 @@
|
|
||||||
(void) scheme;
|
|
||||||
tif->tif_decoderow = ThunderDecodeRow;
|
|
||||||
tif->tif_decodestrip = ThunderDecodeRow;
|
|
||||||
+ tif->tif_setupdecode = ThunderSetupDecode;
|
|
||||||
return (1);
|
|
||||||
}
|
|
||||||
#endif /* THUNDER_SUPPORT */
|
|
@ -1,16 +0,0 @@
|
|||||||
This patch is needed for building the package as of F-11. It can be
|
|
||||||
dropped whenever autoconf 2.63 is no longer used on any live branch.
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/configure.ac tiff-3.9.4/configure.ac
|
|
||||||
--- tiff-3.9.4.orig/configure.ac 2010-06-15 14:58:12.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/configure.ac 2010-06-15 17:13:11.000000000 -0400
|
|
||||||
@@ -24,7 +24,7 @@
|
|
||||||
|
|
||||||
dnl Process this file with autoconf to produce a configure script.
|
|
||||||
|
|
||||||
-AC_PREREQ(2.64)
|
|
||||||
+AC_PREREQ(2.63)
|
|
||||||
AC_INIT([LibTIFF Software],[3.9.4],[tiff@lists.maptools.org],[tiff])
|
|
||||||
AC_CONFIG_AUX_DIR(config)
|
|
||||||
AC_CONFIG_MACRO_DIR(m4)
|
|
@ -1,48 +0,0 @@
|
|||||||
Upstream fix for bug #603024 is incomplete, tif_ojpeg.c should guard against
|
|
||||||
missing strip byte counts too. Testing shows that tiffsplit.c has an issue
|
|
||||||
too.
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=1996
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/libtiff/tif_ojpeg.c tiff-3.9.4/libtiff/tif_ojpeg.c
|
|
||||||
--- tiff-3.9.4.orig/libtiff/tif_ojpeg.c 2010-06-08 19:29:51.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/libtiff/tif_ojpeg.c 2010-06-22 11:25:17.579807706 -0400
|
|
||||||
@@ -1920,6 +1920,10 @@
|
|
||||||
sp->in_buffer_file_pos=0;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
+ if (sp->tif->tif_dir.td_stripbytecount == 0) {
|
|
||||||
+ TIFFErrorExt(sp->tif->tif_clientdata,sp->tif->tif_name,"Strip byte counts are missing");
|
|
||||||
+ return(0);
|
|
||||||
+ }
|
|
||||||
sp->in_buffer_file_togo=sp->tif->tif_dir.td_stripbytecount[sp->in_buffer_next_strile];
|
|
||||||
if (sp->in_buffer_file_togo==0)
|
|
||||||
sp->in_buffer_file_pos=0;
|
|
||||||
diff -Naur tiff-3.9.4.orig/tools/tiffsplit.c tiff-3.9.4/tools/tiffsplit.c
|
|
||||||
--- tiff-3.9.4.orig/tools/tiffsplit.c 2010-06-08 14:50:44.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/tools/tiffsplit.c 2010-06-22 12:23:23.258823151 -0400
|
|
||||||
@@ -237,7 +237,10 @@
|
|
||||||
tstrip_t s, ns = TIFFNumberOfStrips(in);
|
|
||||||
uint32 *bytecounts;
|
|
||||||
|
|
||||||
- TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts);
|
|
||||||
+ if (!TIFFGetField(in, TIFFTAG_STRIPBYTECOUNTS, &bytecounts)) {
|
|
||||||
+ fprintf(stderr, "tiffsplit: strip byte counts are missing\n");
|
|
||||||
+ return (0);
|
|
||||||
+ }
|
|
||||||
for (s = 0; s < ns; s++) {
|
|
||||||
if (bytecounts[s] > (uint32)bufsize) {
|
|
||||||
buf = (unsigned char *)_TIFFrealloc(buf, bytecounts[s]);
|
|
||||||
@@ -267,7 +270,10 @@
|
|
||||||
ttile_t t, nt = TIFFNumberOfTiles(in);
|
|
||||||
uint32 *bytecounts;
|
|
||||||
|
|
||||||
- TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts);
|
|
||||||
+ if (!TIFFGetField(in, TIFFTAG_TILEBYTECOUNTS, &bytecounts)) {
|
|
||||||
+ fprintf(stderr, "tiffsplit: tile byte counts are missing\n");
|
|
||||||
+ return (0);
|
|
||||||
+ }
|
|
||||||
for (t = 0; t < nt; t++) {
|
|
||||||
if (bytecounts[t] > (uint32) bufsize) {
|
|
||||||
buf = (unsigned char *)_TIFFrealloc(buf, bytecounts[t]);
|
|
@ -1,48 +0,0 @@
|
|||||||
Fix misbehavior on 64-bit machines when trying to flip a downsampled image
|
|
||||||
vertically: unsigned ints will be widened to 64 bits the wrong way.
|
|
||||||
See RH bug #583081.
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2207
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.2.orig/libtiff/tif_getimage.c tiff-3.9.2/libtiff/tif_getimage.c
|
|
||||||
--- tiff-3.9.2.orig/libtiff/tif_getimage.c 2009-08-30 12:21:46.000000000 -0400
|
|
||||||
+++ tiff-3.9.2/libtiff/tif_getimage.c 2010-06-10 15:07:28.000000000 -0400
|
|
||||||
@@ -1846,6 +1846,7 @@
|
|
||||||
DECLAREContigPutFunc(putcontig8bitYCbCr22tile)
|
|
||||||
{
|
|
||||||
uint32* cp2;
|
|
||||||
+ int32 incr = 2*toskew+w;
|
|
||||||
(void) y;
|
|
||||||
fromskew = (fromskew / 2) * 6;
|
|
||||||
cp2 = cp+w+toskew;
|
|
||||||
@@ -1872,8 +1873,8 @@
|
|
||||||
cp2 ++ ;
|
|
||||||
pp += 6;
|
|
||||||
}
|
|
||||||
- cp += toskew*2+w;
|
|
||||||
- cp2 += toskew*2+w;
|
|
||||||
+ cp += incr;
|
|
||||||
+ cp2 += incr;
|
|
||||||
pp += fromskew;
|
|
||||||
h-=2;
|
|
||||||
}
|
|
||||||
@@ -1939,6 +1940,7 @@
|
|
||||||
DECLAREContigPutFunc(putcontig8bitYCbCr12tile)
|
|
||||||
{
|
|
||||||
uint32* cp2;
|
|
||||||
+ int32 incr = 2*toskew+w;
|
|
||||||
(void) y;
|
|
||||||
fromskew = (fromskew / 2) * 4;
|
|
||||||
cp2 = cp+w+toskew;
|
|
||||||
@@ -1953,8 +1955,8 @@
|
|
||||||
cp2 ++;
|
|
||||||
pp += 4;
|
|
||||||
} while (--x);
|
|
||||||
- cp += toskew*2+w;
|
|
||||||
- cp2 += toskew*2+w;
|
|
||||||
+ cp += incr;
|
|
||||||
+ cp2 += incr;
|
|
||||||
pp += fromskew;
|
|
||||||
h-=2;
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
gif2tiff buffer overrun. Filed upstream at
|
|
||||||
http://bugzilla.maptools.org/show_bug.cgi?id=2270
|
|
||||||
|
|
||||||
This appears not to be security critical: it's a read not a write
|
|
||||||
overrun, so the worst possible consequence is SIGSEGV, and even that
|
|
||||||
doesn't seem to happen on any popular architectures.
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/tools/gif2tiff.c tiff-3.9.4/tools/gif2tiff.c
|
|
||||||
--- tiff-3.9.4.orig/tools/gif2tiff.c 2010-06-08 14:50:44.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/tools/gif2tiff.c 2010-11-02 22:32:10.018264489 -0400
|
|
||||||
@@ -503,6 +503,10 @@
|
|
||||||
strip = 0;
|
|
||||||
stripsize = TIFFStripSize(tif);
|
|
||||||
for (row=0; row<height; row += rowsperstrip) {
|
|
||||||
+ if (rowsperstrip > height-row) {
|
|
||||||
+ rowsperstrip = height-row;
|
|
||||||
+ stripsize = TIFFVStripSize(tif, rowsperstrip);
|
|
||||||
+ }
|
|
||||||
if (TIFFWriteEncodedStrip(tif, strip, newras+row*width, stripsize) < 0)
|
|
||||||
break;
|
|
||||||
strip++;
|
|
@ -1,17 +0,0 @@
|
|||||||
Minor typo, reported upstream at
|
|
||||||
http://bugzilla.maptools.org/show_bug.cgi?id=2129
|
|
||||||
This patch should not be needed as of libtiff 4.0.
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.2.orig/man/tiffset.1 tiff-3.9.2/man/tiffset.1
|
|
||||||
--- tiff-3.9.2.orig/man/tiffset.1 2006-04-20 08:17:19.000000000 -0400
|
|
||||||
+++ tiff-3.9.2/man/tiffset.1 2009-12-03 12:11:58.000000000 -0500
|
|
||||||
@@ -60,7 +60,7 @@
|
|
||||||
``Anonymous'':
|
|
||||||
.RS
|
|
||||||
.nf
|
|
||||||
-tiffset \-s 305 Anonymous a.tif
|
|
||||||
+tiffset \-s 315 Anonymous a.tif
|
|
||||||
.fi
|
|
||||||
.RE
|
|
||||||
.PP
|
|
@ -1,72 +0,0 @@
|
|||||||
Partial fix for issues filed upstream at
|
|
||||||
http://bugzilla.maptools.org/show_bug.cgi?id=2140
|
|
||||||
This stops the tiffcmp core dump noted in bug #460322, but isn't enough
|
|
||||||
to make tiffcmp return the right answer (it emits a bunch of error
|
|
||||||
messages instead).
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.2.orig/libtiff/tif_jpeg.c tiff-3.9.2/libtiff/tif_jpeg.c
|
|
||||||
--- tiff-3.9.2.orig/libtiff/tif_jpeg.c 2009-08-30 12:21:46.000000000 -0400
|
|
||||||
+++ tiff-3.9.2/libtiff/tif_jpeg.c 2010-01-05 22:40:40.000000000 -0500
|
|
||||||
@@ -988,8 +988,15 @@
|
|
||||||
tsize_t nrows;
|
|
||||||
(void) s;
|
|
||||||
|
|
||||||
- /* data is expected to be read in multiples of a scanline */
|
|
||||||
- if ( (nrows = sp->cinfo.d.image_height) ) {
|
|
||||||
+ nrows = cc / sp->bytesperline;
|
|
||||||
+ if (cc % sp->bytesperline)
|
|
||||||
+ TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline not read");
|
|
||||||
+
|
|
||||||
+ if( nrows > (int) sp->cinfo.d.image_height )
|
|
||||||
+ nrows = sp->cinfo.d.image_height;
|
|
||||||
+
|
|
||||||
+ /* data is expected to be read in multiples of a scanline */
|
|
||||||
+ if (nrows) {
|
|
||||||
/* Cb,Cr both have sampling factors 1, so this is correct */
|
|
||||||
JDIMENSION clumps_per_line = sp->cinfo.d.comp_info[1].downsampled_width;
|
|
||||||
int samples_per_clump = sp->samplesperclump;
|
|
||||||
@@ -1087,8 +1094,7 @@
|
|
||||||
* TODO: resolve this */
|
|
||||||
buf += sp->bytesperline;
|
|
||||||
cc -= sp->bytesperline;
|
|
||||||
- nrows -= sp->v_sampling;
|
|
||||||
- } while (nrows > 0);
|
|
||||||
+ } while (--nrows > 0);
|
|
||||||
|
|
||||||
#ifdef JPEG_LIB_MK1
|
|
||||||
_TIFFfree(tmpbuf);
|
|
||||||
diff -Naur tiff-3.9.2.orig/libtiff/tif_strip.c tiff-3.9.2/libtiff/tif_strip.c
|
|
||||||
--- tiff-3.9.2.orig/libtiff/tif_strip.c 2006-03-25 13:04:35.000000000 -0500
|
|
||||||
+++ tiff-3.9.2/libtiff/tif_strip.c 2010-01-05 21:39:20.000000000 -0500
|
|
||||||
@@ -238,23 +238,19 @@
|
|
||||||
ycbcrsubsampling + 0,
|
|
||||||
ycbcrsubsampling + 1);
|
|
||||||
|
|
||||||
- if (ycbcrsubsampling[0] == 0) {
|
|
||||||
+ if (ycbcrsubsampling[0]*ycbcrsubsampling[1] == 0) {
|
|
||||||
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
|
|
||||||
"Invalid YCbCr subsampling");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- scanline = TIFFroundup(td->td_imagewidth,
|
|
||||||
+ /* number of sample clumps per line */
|
|
||||||
+ scanline = TIFFhowmany(td->td_imagewidth,
|
|
||||||
ycbcrsubsampling[0]);
|
|
||||||
- scanline = TIFFhowmany8(multiply(tif, scanline,
|
|
||||||
- td->td_bitspersample,
|
|
||||||
- "TIFFScanlineSize"));
|
|
||||||
- return ((tsize_t)
|
|
||||||
- summarize(tif, scanline,
|
|
||||||
- multiply(tif, 2,
|
|
||||||
- scanline / ycbcrsubsampling[0],
|
|
||||||
- "TIFFVStripSize"),
|
|
||||||
- "TIFFVStripSize"));
|
|
||||||
+ /* number of samples per line */
|
|
||||||
+ scanline = multiply(tif, scanline,
|
|
||||||
+ ycbcrsubsampling[0]*ycbcrsubsampling[1] + 2,
|
|
||||||
+ "TIFFScanlineSize");
|
|
||||||
} else {
|
|
||||||
scanline = multiply(tif, td->td_imagewidth,
|
|
||||||
td->td_samplesperpixel,
|
|
@ -1,51 +0,0 @@
|
|||||||
Use the spec-mandated default YCbCrSubSampling values in strip size
|
|
||||||
calculations, if the YCBCRSUBSAMPLING tag hasn't been provided.
|
|
||||||
See bug #603703.
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2215
|
|
||||||
|
|
||||||
NB: must be applied after libtiff-scanlinesize.patch to avoid fuzz issues.
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.2.orig/libtiff/tif_strip.c tiff-3.9.2/libtiff/tif_strip.c
|
|
||||||
--- tiff-3.9.2.orig/libtiff/tif_strip.c 2006-03-25 13:04:35.000000000 -0500
|
|
||||||
+++ tiff-3.9.2/libtiff/tif_strip.c 2010-06-14 12:00:49.000000000 -0400
|
|
||||||
@@ -124,9 +124,9 @@
|
|
||||||
uint16 ycbcrsubsampling[2];
|
|
||||||
tsize_t w, scanline, samplingarea;
|
|
||||||
|
|
||||||
- TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING,
|
|
||||||
- ycbcrsubsampling + 0,
|
|
||||||
- ycbcrsubsampling + 1 );
|
|
||||||
+ TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING,
|
|
||||||
+ ycbcrsubsampling + 0,
|
|
||||||
+ ycbcrsubsampling + 1);
|
|
||||||
|
|
||||||
samplingarea = ycbcrsubsampling[0]*ycbcrsubsampling[1];
|
|
||||||
if (samplingarea == 0) {
|
|
||||||
@@ -234,9 +234,9 @@
|
|
||||||
&& !isUpSampled(tif)) {
|
|
||||||
uint16 ycbcrsubsampling[2];
|
|
||||||
|
|
||||||
- TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING,
|
|
||||||
- ycbcrsubsampling + 0,
|
|
||||||
- ycbcrsubsampling + 1);
|
|
||||||
+ TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING,
|
|
||||||
+ ycbcrsubsampling + 0,
|
|
||||||
+ ycbcrsubsampling + 1);
|
|
||||||
|
|
||||||
if (ycbcrsubsampling[0]*ycbcrsubsampling[1] == 0) {
|
|
||||||
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
|
|
||||||
@@ -308,9 +308,9 @@
|
|
||||||
&& !isUpSampled(tif)) {
|
|
||||||
uint16 ycbcrsubsampling[2];
|
|
||||||
|
|
||||||
- TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING,
|
|
||||||
- ycbcrsubsampling + 0,
|
|
||||||
- ycbcrsubsampling + 1);
|
|
||||||
+ TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING,
|
|
||||||
+ ycbcrsubsampling + 0,
|
|
||||||
+ ycbcrsubsampling + 1);
|
|
||||||
|
|
||||||
if (ycbcrsubsampling[0]*ycbcrsubsampling[1] == 0) {
|
|
||||||
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
|
|
@ -1,35 +0,0 @@
|
|||||||
Make tiffdump more paranoid about checking the count field of a directory
|
|
||||||
entry.
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2218
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/tools/tiffdump.c tiff-3.9.4/tools/tiffdump.c
|
|
||||||
--- tiff-3.9.4.orig/tools/tiffdump.c 2010-06-08 14:50:44.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/tools/tiffdump.c 2010-06-22 12:51:42.207932477 -0400
|
|
||||||
@@ -46,6 +46,7 @@
|
|
||||||
# include <io.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+#include "tiffiop.h"
|
|
||||||
#include "tiffio.h"
|
|
||||||
|
|
||||||
#ifndef O_BINARY
|
|
||||||
@@ -317,7 +318,7 @@
|
|
||||||
printf(">\n");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
- space = dp->tdir_count * datawidth[dp->tdir_type];
|
|
||||||
+ space = TIFFSafeMultiply(int, dp->tdir_count, datawidth[dp->tdir_type]);
|
|
||||||
if (space <= 0) {
|
|
||||||
printf(">\n");
|
|
||||||
Error("Invalid count for tag %u", dp->tdir_tag);
|
|
||||||
@@ -709,7 +710,7 @@
|
|
||||||
w = (dir->tdir_type < NWIDTHS ? datawidth[dir->tdir_type] : 0);
|
|
||||||
cc = dir->tdir_count * w;
|
|
||||||
if (lseek(fd, (off_t)dir->tdir_offset, 0) != (off_t)-1
|
|
||||||
- && read(fd, cp, cc) != -1) {
|
|
||||||
+ && read(fd, cp, cc) == cc) {
|
|
||||||
if (swabflag) {
|
|
||||||
switch (dir->tdir_type) {
|
|
||||||
case TIFF_SHORT:
|
|
@ -1,47 +0,0 @@
|
|||||||
Ooops, previous fix to unknown-tag handling caused TIFFReadDirectory to
|
|
||||||
sometimes complain about out-of-order tags when there weren't really any.
|
|
||||||
Fix by decoupling that logic from the tag search logic.
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2210
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.4.orig/libtiff/tif_dirread.c tiff-3.9.4/libtiff/tif_dirread.c
|
|
||||||
--- tiff-3.9.4.orig/libtiff/tif_dirread.c 2010-06-14 10:27:51.000000000 -0400
|
|
||||||
+++ tiff-3.9.4/libtiff/tif_dirread.c 2010-06-16 01:27:03.000000000 -0400
|
|
||||||
@@ -83,6 +83,7 @@
|
|
||||||
const TIFFFieldInfo* fip;
|
|
||||||
size_t fix;
|
|
||||||
uint16 dircount;
|
|
||||||
+ uint16 previous_tag = 0;
|
|
||||||
int diroutoforderwarning = 0, compressionknown = 0;
|
|
||||||
int haveunknowntags = 0;
|
|
||||||
|
|
||||||
@@ -163,23 +164,24 @@
|
|
||||||
|
|
||||||
if (dp->tdir_tag == IGNORE)
|
|
||||||
continue;
|
|
||||||
- if (fix >= tif->tif_nfields)
|
|
||||||
- fix = 0;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Silicon Beach (at least) writes unordered
|
|
||||||
* directory tags (violating the spec). Handle
|
|
||||||
* it here, but be obnoxious (maybe they'll fix it?).
|
|
||||||
*/
|
|
||||||
- if (dp->tdir_tag < tif->tif_fieldinfo[fix]->field_tag) {
|
|
||||||
+ if (dp->tdir_tag < previous_tag) {
|
|
||||||
if (!diroutoforderwarning) {
|
|
||||||
TIFFWarningExt(tif->tif_clientdata, module,
|
|
||||||
"%s: invalid TIFF directory; tags are not sorted in ascending order",
|
|
||||||
tif->tif_name);
|
|
||||||
diroutoforderwarning = 1;
|
|
||||||
}
|
|
||||||
- fix = 0; /* O(n^2) */
|
|
||||||
}
|
|
||||||
+ previous_tag = dp->tdir_tag;
|
|
||||||
+ if (fix >= tif->tif_nfields ||
|
|
||||||
+ dp->tdir_tag < tif->tif_fieldinfo[fix]->field_tag)
|
|
||||||
+ fix = 0; /* O(n^2) */
|
|
||||||
while (fix < tif->tif_nfields &&
|
|
||||||
tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
|
|
||||||
fix++;
|
|
@ -1,35 +0,0 @@
|
|||||||
Using an array to clamp translated YCbCr values is insecure, because if the
|
|
||||||
TIFF file contains bogus ReferenceBlackWhite parameters, the computed RGB
|
|
||||||
values could be very far out of range (much further than the current array
|
|
||||||
size, anyway), possibly resulting in SIGSEGV. Just drop the whole idea in
|
|
||||||
favor of using a comparison-based macro to clamp. See RH bug #583081.
|
|
||||||
|
|
||||||
Filed upstream at http://bugzilla.maptools.org/show_bug.cgi?id=2208
|
|
||||||
|
|
||||||
|
|
||||||
diff -Naur tiff-3.9.2.orig/libtiff/tif_color.c tiff-3.9.2/libtiff/tif_color.c
|
|
||||||
--- tiff-3.9.2.orig/libtiff/tif_color.c 2006-02-09 10:42:20.000000000 -0500
|
|
||||||
+++ tiff-3.9.2/libtiff/tif_color.c 2010-06-10 15:53:24.000000000 -0400
|
|
||||||
@@ -183,13 +183,18 @@
|
|
||||||
TIFFYCbCrtoRGB(TIFFYCbCrToRGB *ycbcr, uint32 Y, int32 Cb, int32 Cr,
|
|
||||||
uint32 *r, uint32 *g, uint32 *b)
|
|
||||||
{
|
|
||||||
+ int32 i;
|
|
||||||
+
|
|
||||||
/* XXX: Only 8-bit YCbCr input supported for now */
|
|
||||||
Y = HICLAMP(Y, 255), Cb = CLAMP(Cb, 0, 255), Cr = CLAMP(Cr, 0, 255);
|
|
||||||
|
|
||||||
- *r = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr]];
|
|
||||||
- *g = ycbcr->clamptab[ycbcr->Y_tab[Y]
|
|
||||||
- + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT)];
|
|
||||||
- *b = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb]];
|
|
||||||
+ i = ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr];
|
|
||||||
+ *r = CLAMP(i, 0, 255);
|
|
||||||
+ i = ycbcr->Y_tab[Y]
|
|
||||||
+ + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT);
|
|
||||||
+ *g = CLAMP(i, 0, 255);
|
|
||||||
+ i = ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb];
|
|
||||||
+ *b = CLAMP(i, 0, 255);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
36
libtiff.spec
36
libtiff.spec
@ -1,26 +1,13 @@
|
|||||||
Summary: Library of functions for manipulating TIFF format image files
|
Summary: Library of functions for manipulating TIFF format image files
|
||||||
Name: libtiff
|
Name: libtiff
|
||||||
Version: 3.9.4
|
Version: 3.9.5
|
||||||
Release: 4%{?dist}
|
Release: 1%{?dist}
|
||||||
|
|
||||||
License: libtiff
|
License: libtiff
|
||||||
Group: System Environment/Libraries
|
Group: System Environment/Libraries
|
||||||
URL: http://www.remotesensing.org/libtiff/
|
URL: http://www.remotesensing.org/libtiff/
|
||||||
|
|
||||||
Source: ftp://ftp.remotesensing.org/pub/libtiff/tiff-%{version}.tar.gz
|
Source: ftp://ftp.remotesensing.org/pub/libtiff/tiff-%{version}.tar.gz
|
||||||
Patch1: libtiff-acversion.patch
|
|
||||||
Patch2: libtiff-mantypo.patch
|
|
||||||
Patch3: libtiff-scanlinesize.patch
|
|
||||||
Patch4: libtiff-getimage-64bit.patch
|
|
||||||
Patch5: libtiff-ycbcr-clamp.patch
|
|
||||||
Patch6: libtiff-3samples.patch
|
|
||||||
Patch7: libtiff-subsampling.patch
|
|
||||||
Patch8: libtiff-unknown-fix.patch
|
|
||||||
Patch9: libtiff-checkbytecount.patch
|
|
||||||
Patch10: libtiff-tiffdump.patch
|
|
||||||
Patch11: libtiff-CVE-2011-0192.patch
|
|
||||||
Patch12: libtiff-CVE-2011-1167.patch
|
|
||||||
Patch13: libtiff-gif2tiff-overrun.patch
|
|
||||||
|
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
|
||||||
BuildRequires: zlib-devel libjpeg-devel
|
BuildRequires: zlib-devel libjpeg-devel
|
||||||
@ -73,20 +60,6 @@ image files using the libtiff library.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n tiff-%{version}
|
%setup -q -n tiff-%{version}
|
||||||
|
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
%patch5 -p1
|
|
||||||
%patch6 -p1
|
|
||||||
%patch7 -p1
|
|
||||||
%patch8 -p1
|
|
||||||
%patch9 -p1
|
|
||||||
%patch10 -p1
|
|
||||||
%patch11 -p1
|
|
||||||
%patch12 -p1
|
|
||||||
%patch13 -p1
|
|
||||||
|
|
||||||
# Use build system's libtool.m4, not the one in the package.
|
# Use build system's libtool.m4, not the one in the package.
|
||||||
rm -f libtool.m4
|
rm -f libtool.m4
|
||||||
|
|
||||||
@ -197,6 +170,11 @@ rm -rf $RPM_BUILD_ROOT
|
|||||||
%{_mandir}/man1/*
|
%{_mandir}/man1/*
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Apr 12 2011 Tom Lane <tgl@redhat.com> 3.9.5-1
|
||||||
|
- Update to libtiff 3.9.5, incorporating all our previous patches plus other
|
||||||
|
fixes, notably the fix for CVE-2009-5022
|
||||||
|
Related: #695885
|
||||||
|
|
||||||
* Mon Mar 21 2011 Tom Lane <tgl@redhat.com> 3.9.4-4
|
* Mon Mar 21 2011 Tom Lane <tgl@redhat.com> 3.9.4-4
|
||||||
- Fix incorrect fix for CVE-2011-0192
|
- Fix incorrect fix for CVE-2011-0192
|
||||||
Resolves: #684007
|
Resolves: #684007
|
||||||
|
Loading…
Reference in New Issue
Block a user