Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backport tiff from trunk to fix a few CVE's #520

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 3 additions & 4 deletions graphics/tiff/Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# $NetBSD: Makefile,v 1.125 2016/11/23 13:51:29 he Exp $
# $NetBSD: Makefile,v 1.137 2017/06/21 01:08:33 tez Exp $

DISTNAME= tiff-4.0.7
DISTNAME= tiff-4.0.8
PKGREVISION= 1
CATEGORIES= graphics
MASTER_SITES= ftp://download.osgeo.org/libtiff/
Expand All @@ -14,7 +14,6 @@ EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}

USE_LANGUAGES= c c++
USE_LIBTOOL= yes
USE_MULTIARCH= lib
GNU_CONFIGURE= yes
CONFIGURE_ARGS+= --enable-rpath
CONFIGURE_ARGS+= --enable-cxx
Expand All @@ -28,7 +27,7 @@ TEST_TARGET= check
post-install:
cd ${DESTDIR}/${PREFIX}/${PKGMANDIR}/man3 && for file in *.3tiff; do\
target=`${ECHO} $$file | sed "s/3tiff/3/"`; \
[ -f $$file ] && ${MV} $$file $$target || ${TRUE}; \
${MV} $$file $$target; \
done

.include "options.mk"
Expand Down
3 changes: 2 additions & 1 deletion graphics/tiff/PLIST
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
@comment $NetBSD: PLIST,v 1.23 2016/11/23 13:51:29 he Exp $
@comment $NetBSD: PLIST,v 1.24 2017/05/29 13:44:05 he Exp $
bin/fax2ps
bin/fax2tiff
bin/pal2rgb
Expand Down Expand Up @@ -232,4 +232,5 @@ share/doc/tiff/html/v4.0.4.html
share/doc/tiff/html/v4.0.4beta.html
share/doc/tiff/html/v4.0.5.html
share/doc/tiff/html/v4.0.6.html
share/doc/tiff/html/v4.0.7.html
share/doc/tiff/html/v${PKGVERSION}.html
15 changes: 8 additions & 7 deletions graphics/tiff/distinfo
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
$NetBSD: distinfo,v 1.71 2016/11/23 13:51:29 he Exp $
$NetBSD: distinfo,v 1.86 2017/06/21 02:47:45 pgoyette Exp $

SHA1 (tiff-4.0.7.tar.gz) = 2c1b64478e88f93522a42dd5271214a0e5eae648
RMD160 (tiff-4.0.7.tar.gz) = 582e19c31e7f29d9ed36995dcad7ad68802cbadb
SHA512 (tiff-4.0.7.tar.gz) = 941357bdd5f947cdca41a1d31ae14b3fadc174ae5dce7b7981dbe58f61995f575ac2e97a7cc4fcc435184012017bec0920278263490464644f2cdfad9a6c5ddc
Size (tiff-4.0.7.tar.gz) = 2076392 bytes
SHA1 (tiff-4.0.8.tar.gz) = 88717c97480a7976c94d23b6d9ed4ac74715267f
RMD160 (tiff-4.0.8.tar.gz) = 0d8bc26c98035810c73b8f876f76dc48efba7da8
SHA512 (tiff-4.0.8.tar.gz) = 5d010ec4ce37aca733f7ab7db9f432987b0cd21664bd9d99452a146833c40f0d1e7309d1870b0395e947964134d5cfeb1366181e761fe353ad585803ff3d6be6
Size (tiff-4.0.8.tar.gz) = 2065574 bytes
SHA1 (patch-configure) = a0032133f06b6ac92bbf52349fabe83f74ea14a6
SHA1 (patch-html_man_Makefile.in) = 705604e2a3065da192e7354a4a9cdcd16bd6823d
SHA1 (patch-man_Makefile.in) = ff073529c9d3ab98a03efa7d98c3263c1782482f
SHA1 (patch-libtiff_tif_dir.h) = 50f565eac6a7157a7c99923f4b3ffaf31b021644
SHA1 (patch-libtiff_tif_dirinfo.c) = cd0e4da46f62d888128e558c16ebcc6a867274df
SHA1 (patch-libtiff_tif_dirread.c) = d98b5cb0ceca8f5923c015b09f04da3b8af094e5
15 changes: 0 additions & 15 deletions graphics/tiff/patches/patch-html_man_Makefile.in

This file was deleted.

25 changes: 25 additions & 0 deletions graphics/tiff/patches/patch-libtiff_tif_dir.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
$NetBSD: patch-libtiff_tif_dir.h,v 1.3 2017/06/21 02:47:45 pgoyette Exp $

fix CVE-2014-8128, CVE-2016-5318, CVE-2015-7554 & CVE-2016-10095
per http://bugzilla.maptools.org/show_bug.cgi?id=2580

also CVE-2017-9147
(http://bugzilla.maptools.org/show_bug.cgi?id=2693)


Index: tif_dir.h
===================================================================
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.h,v
retrieving revision 1.54
retrieving revision 1.55
diff -w -u -b -r1.54 -r1.55
--- libtiff/tif_dir.h.orig 18 Feb 2011 20:53:05 -0000 1.54
+++ libtiff/tif_dir.h 1 Jun 2017 12:44:04 -0000 1.55
@@ -291,6 +291,7 @@
extern int _TIFFMergeFields(TIFF*, const TIFFField[], uint32);
extern const TIFFField* _TIFFFindOrRegisterField(TIFF *, uint32, TIFFDataType);
extern TIFFField* _TIFFCreateAnonField(TIFF *, uint32, TIFFDataType);
+extern int _TIFFCheckFieldIsValidForCodec(TIFF *tif, ttag_t tag);

#if defined(__cplusplus)
}
127 changes: 127 additions & 0 deletions graphics/tiff/patches/patch-libtiff_tif_dirinfo.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
$NetBSD: patch-libtiff_tif_dirinfo.c,v 1.3 2017/06/21 02:47:45 pgoyette Exp $

fix CVE-2014-8128, CVE-2016-5318, CVE-2015-7554 & CVE-2016-10095
per http://bugzilla.maptools.org/show_bug.cgi?id=2580

also CVE-2017-9147
(http://bugzilla.maptools.org/show_bug.cgi?id=2693)


Index: tif_dirinfo.c
===================================================================
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirinfo.c,v
retrieving revision 1.126
retrieving revision 1.127
diff -w -u -b -r1.126 -r1.127
--- libtiff/tif_dirinfo.c.orig 18 Nov 2016 02:52:13 -0000 1.126
+++ libtiff/tif_dirinfo.c 1 Jun 2017 12:44:04 -0000 1.127
@@ -956,6 +956,109 @@
return 0;
}

+int
+_TIFFCheckFieldIsValidForCodec(TIFF *tif, ttag_t tag)
+{
+ /* Filter out non-codec specific tags */
+ switch (tag) {
+ /* Shared tags */
+ case TIFFTAG_PREDICTOR:
+ /* JPEG tags */
+ case TIFFTAG_JPEGTABLES:
+ /* OJPEG tags */
+ case TIFFTAG_JPEGIFOFFSET:
+ case TIFFTAG_JPEGIFBYTECOUNT:
+ case TIFFTAG_JPEGQTABLES:
+ case TIFFTAG_JPEGDCTABLES:
+ case TIFFTAG_JPEGACTABLES:
+ case TIFFTAG_JPEGPROC:
+ case TIFFTAG_JPEGRESTARTINTERVAL:
+ /* CCITT* */
+ case TIFFTAG_BADFAXLINES:
+ case TIFFTAG_CLEANFAXDATA:
+ case TIFFTAG_CONSECUTIVEBADFAXLINES:
+ case TIFFTAG_GROUP3OPTIONS:
+ case TIFFTAG_GROUP4OPTIONS:
+ break;
+ default:
+ return 1;
+ }
+ /* Check if codec specific tags are allowed for the current
+ * compression scheme (codec) */
+ switch (tif->tif_dir.td_compression) {
+ case COMPRESSION_LZW:
+ if (tag == TIFFTAG_PREDICTOR)
+ return 1;
+ break;
+ case COMPRESSION_PACKBITS:
+ /* No codec-specific tags */
+ break;
+ case COMPRESSION_THUNDERSCAN:
+ /* No codec-specific tags */
+ break;
+ case COMPRESSION_NEXT:
+ /* No codec-specific tags */
+ break;
+ case COMPRESSION_JPEG:
+ if (tag == TIFFTAG_JPEGTABLES)
+ return 1;
+ break;
+ case COMPRESSION_OJPEG:
+ switch (tag) {
+ case TIFFTAG_JPEGIFOFFSET:
+ case TIFFTAG_JPEGIFBYTECOUNT:
+ case TIFFTAG_JPEGQTABLES:
+ case TIFFTAG_JPEGDCTABLES:
+ case TIFFTAG_JPEGACTABLES:
+ case TIFFTAG_JPEGPROC:
+ case TIFFTAG_JPEGRESTARTINTERVAL:
+ return 1;
+ }
+ break;
+ case COMPRESSION_CCITTRLE:
+ case COMPRESSION_CCITTRLEW:
+ case COMPRESSION_CCITTFAX3:
+ case COMPRESSION_CCITTFAX4:
+ switch (tag) {
+ case TIFFTAG_BADFAXLINES:
+ case TIFFTAG_CLEANFAXDATA:
+ case TIFFTAG_CONSECUTIVEBADFAXLINES:
+ return 1;
+ case TIFFTAG_GROUP3OPTIONS:
+ if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX3)
+ return 1;
+ break;
+ case TIFFTAG_GROUP4OPTIONS:
+ if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX4)
+ return 1;
+ break;
+ }
+ break;
+ case COMPRESSION_JBIG:
+ /* No codec-specific tags */
+ break;
+ case COMPRESSION_DEFLATE:
+ case COMPRESSION_ADOBE_DEFLATE:
+ if (tag == TIFFTAG_PREDICTOR)
+ return 1;
+ break;
+ case COMPRESSION_PIXARLOG:
+ if (tag == TIFFTAG_PREDICTOR)
+ return 1;
+ break;
+ case COMPRESSION_SGILOG:
+ case COMPRESSION_SGILOG24:
+ /* No codec-specific tags */
+ break;
+ case COMPRESSION_LZMA:
+ if (tag == TIFFTAG_PREDICTOR)
+ return 1;
+ break;
+
+ }
+ return 0;
+}
+
/* vim: set ts=8 sts=8 sw=8 noet: */

/*
28 changes: 28 additions & 0 deletions graphics/tiff/patches/patch-libtiff_tif_dirread.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
$NetBSD: patch-libtiff_tif_dirread.c,v 1.7 2017/06/21 02:47:45 pgoyette Exp $

fix CVE-2014-8128, CVE-2016-5318, CVE-2015-7554 & CVE-2016-10095
per http://bugzilla.maptools.org/show_bug.cgi?id=2580

also CVE-2017-9147
(http://bugzilla.maptools.org/show_bug.cgi?id=2693)


Index: tif_dirread.c
===================================================================
RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dirread.c,v
retrieving revision 1.208
retrieving revision 1.209
diff -w -u -b -r1.208 -r1.209
--- libtiff/tif_dirread.c.orig 27 Apr 2017 15:46:22 -0000 1.208
+++ libtiff/tif_dirread.c 1 Jun 2017 12:44:04 -0000 1.209
@@ -3580,6 +3580,10 @@
goto bad;
dp->tdir_tag=IGNORE;
break;
+ default:
+ if( !_TIFFCheckFieldIsValidForCodec(tif, dp->tdir_tag) )
+ dp->tdir_tag=IGNORE;
+ break;
}
}
}
16 changes: 0 additions & 16 deletions graphics/tiff/patches/patch-man_Makefile.in

This file was deleted.