summaryrefslogtreecommitdiff
path: root/graphics/tiff/patches
diff options
context:
space:
mode:
authordholland <dholland>2013-09-21 18:47:05 +0000
committerdholland <dholland>2013-09-21 18:47:05 +0000
commit78cf3c2dede43c792477ce72ca93dc0a24b81371 (patch)
treee980496f8661fc65289558cb86badc1aeca8e558 /graphics/tiff/patches
parent667dd9ab76c3c761e52e237fd7dc4ebf2c769b50 (diff)
downloadpkgsrc-78cf3c2dede43c792477ce72ca93dc0a24b81371.tar.gz
Add upstream candidate patch for CVE-2013-4243. PKGREVISION -> 6
Diffstat (limited to 'graphics/tiff/patches')
-rw-r--r--graphics/tiff/patches/patch-CVE-2013-424345
1 files changed, 45 insertions, 0 deletions
diff --git a/graphics/tiff/patches/patch-CVE-2013-4243 b/graphics/tiff/patches/patch-CVE-2013-4243
new file mode 100644
index 00000000000..e71ac593450
--- /dev/null
+++ b/graphics/tiff/patches/patch-CVE-2013-4243
@@ -0,0 +1,45 @@
+$NetBSD: patch-CVE-2013-4243,v 1.1 2013/09/21 18:47:05 dholland Exp $
+
+Upstream candidate patch for CVE 2013-4243.
+taken from http://bugzilla.maptools.org/attachment.cgi?id=518
+(via http://bugzilla.maptools.org/show_bug.cgi?id=2451)
+
+Despite looking suspect with respect to integer overflows, this
+appears to be ok, as long as you aren't on a 16-bit platform, because
+the largest image size the input can encode is apparently 65535*65535.
+
+--- tools/gif2tiff.c.orig 2013-09-21 18:45:13.000000000 +0000
++++ tools/gif2tiff.c
+@@ -280,6 +280,10 @@ readgifimage(char* mode)
+ fprintf(stderr, "no colormap present for image\n");
+ return (0);
+ }
++ if (width == 0 || height == 0) {
++ fprintf(stderr, "Invalid value of width or height\n");
++ return(0);
++ }
+ if ((raster = (unsigned char*) _TIFFmalloc(width*height+EXTRAFUDGE)) == NULL) {
+ fprintf(stderr, "not enough memory for image\n");
+ return (0);
+@@ -406,6 +410,10 @@ process(register int code, unsigned char
+ fprintf(stderr, "bad input: code=%d is larger than clear=%d\n",code, clear);
+ return 0;
+ }
++ if (*fill >= raster + width*height) {
++ fprintf(stderr, "raster full before eoi code\n");
++ return 0;
++ }
+ *(*fill)++ = suffix[code];
+ firstchar = oldcode = code;
+ return 1;
+@@ -436,6 +444,10 @@ process(register int code, unsigned char
+ }
+ oldcode = incode;
+ do {
++ if (*fill >= raster + width*height) {
++ fprintf(stderr, "raster full before eoi code\n");
++ return 0;
++ }
+ *(*fill)++ = *--stackp;
+ } while (stackp > stack);
+ return 1;