* gnu/packages/patches/libtiff-CVE-2016-10092.patch, gnu/packages/patches/libtiff-CVE-2016-10093.patch, gnu/packages/patches/libtiff-CVE-2016-10094.patch, gnu/packages/patches/libtiff-assertion-failure.patch, gnu/packages/patches/libtiff-divide-by-zero-ojpeg.patch, gnu/packages/patches/libtiff-divide-by-zero-tiffcp.patch, gnu/packages/patches/libtiff-divide-by-zero-tiffcrop.patch, gnu/packages/patches/libtiff-divide-by-zero.patch, gnu/packages/patches/libtiff-heap-overflow-pixarlog-luv.patch, gnu/packages/patches/libtiff-heap-overflow-tif-dirread.patch, gnu/packages/patches/libtiff-heap-overflow-tiffcp.patch, gnu/packages/patches/libtiff-heap-overflow-tiffcrop.patch, gnu/packages/patches/libtiff-invalid-read.patch, gnu/packages/patches/libtiff-null-dereference.patch, gnu/packages/patches/libtiff-tiffcp-underflow.patch: New files. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/image.scm (libtiff)[replacement]: New field. (libtiff/fixed): New variable.
		
			
				
	
	
		
			67 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
	
		
			2.6 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| Fix heap buffer overflow in tiffcp when parsing number of inks:
 | |
| 
 | |
| http://bugzilla.maptools.org/show_bug.cgi?id=2599
 | |
| 
 | |
| 2016-12-03 Even Rouault <even.rouault at spatialys.com>
 | |
| 
 | |
|         * tools/tif_dir.c: when TIFFGetField(, TIFFTAG_NUMBEROFINKS, ) is
 | |
| called,
 | |
|         limit the return number of inks to SamplesPerPixel, so that code that
 | |
| parses
 | |
|         ink names doesn't go past the end of the buffer.
 | |
|         Reported by Agostino Sarubbo.
 | |
|         Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2599
 | |
| 
 | |
| 
 | |
| /cvs/maptools/cvsroot/libtiff/ChangeLog,v  <--  ChangeLog
 | |
| new revision: 1.1184; previous revision: 1.1183
 | |
| /cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.c,v  <--  libtiff/tif_dir.c
 | |
| new revision: 1.128; previous revision: 1.127
 | |
| 
 | |
| Index: libtiff/libtiff/tif_dir.c
 | |
| ===================================================================
 | |
| RCS file: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dir.c,v
 | |
| retrieving revision 1.127
 | |
| retrieving revision 1.128
 | |
| diff -u -r1.127 -r1.128
 | |
| --- libtiff/libtiff/tif_dir.c	25 Oct 2016 21:35:15 -0000	1.127
 | |
| +++ libtiff/libtiff/tif_dir.c	3 Dec 2016 15:30:31 -0000	1.128
 | |
| @@ -1,4 +1,4 @@
 | |
| -/* $Id: tif_dir.c,v 1.127 2016-10-25 21:35:15 erouault Exp $ */
 | |
| +/* $Id: tif_dir.c,v 1.128 2016-12-03 15:30:31 erouault Exp $ */
 | |
|  
 | |
|  /*
 | |
|   * Copyright (c) 1988-1997 Sam Leffler
 | |
| @@ -854,6 +854,32 @@
 | |
|  	if( fip == NULL ) /* cannot happen since TIFFGetField() already checks it */
 | |
|  	    return 0;
 | |
|  	
 | |
| +        if( tag == TIFFTAG_NUMBEROFINKS )
 | |
| +        {
 | |
| +            int i;
 | |
| +            for (i = 0; i < td->td_customValueCount; i++) {
 | |
| +                uint16 val;
 | |
| +                TIFFTagValue *tv = td->td_customValues + i;
 | |
| +                if (tv->info->field_tag != tag)
 | |
| +                    continue;
 | |
| +                val = *(uint16 *)tv->value;
 | |
| +                /* Truncate to SamplesPerPixel, since the */
 | |
| +                /* setting code for INKNAMES assume that there are SamplesPerPixel */
 | |
| +                /* inknames. */
 | |
| +                /* Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2599 */
 | |
| +                if( val > td->td_samplesperpixel )
 | |
| +                {
 | |
| +                    TIFFWarningExt(tif->tif_clientdata,"_TIFFVGetField",
 | |
| +                                   "Truncating NumberOfInks from %u to %u",
 | |
| +                                   val, td->td_samplesperpixel);
 | |
| +                    val = td->td_samplesperpixel;
 | |
| +                }
 | |
| +                *va_arg(ap, uint16*) = val;
 | |
| +                return 1;
 | |
| +            }
 | |
| +            return 0;
 | |
| +        }
 | |
| +
 | |
|  	/*
 | |
|  	 * We want to force the custom code to be used for custom
 | |
|  	 * fields even if the tag happens to match a well known 
 |