* gnu/packages/php.scm (php)[inputs]: Use gd-for-php. (gd-for-php): New private variable. * gnu/packages/patches/gd-CVE-2018-5711.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it.
		
			
				
	
	
		
			61 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
This patch is adapted from commit a11f47475e6443b7f32d21f2271f28f417e2ac04 and
 | 
						|
fixes CVE-2018-5711.
 | 
						|
 | 
						|
From a11f47475e6443b7f32d21f2271f28f417e2ac04 Mon Sep 17 00:00:00 2001
 | 
						|
From: "Christoph M. Becker" <cmbecker69@gmx.de>
 | 
						|
Date: Wed, 29 Nov 2017 19:37:38 +0100
 | 
						|
Subject: [PATCH] Fix #420: Potential infinite loop in gdImageCreateFromGifCtx
 | 
						|
 | 
						|
Due to a signedness confusion in `GetCode_` a corrupt GIF file can
 | 
						|
trigger an infinite loop.  Furthermore we make sure that a GIF without
 | 
						|
any palette entries is treated as invalid *after* open palette entries
 | 
						|
have been removed.
 | 
						|
 | 
						|
CVE-2018-5711
 | 
						|
 | 
						|
See also https://bugs.php.net/bug.php?id=75571.
 | 
						|
---
 | 
						|
 src/gd_gif_in.c             |  12 ++++++------
 | 
						|
 1 file changed, 38 insertions(+), 6 deletions(-)
 | 
						|
 | 
						|
diff --git a/src/gd_gif_in.c b/src/gd_gif_in.c
 | 
						|
index daf26e7..0a8bd71 100644
 | 
						|
--- a/src/gd_gif_in.c
 | 
						|
+++ b/src/gd_gif_in.c
 | 
						|
@@ -335,11 +335,6 @@ terminated:
 | 
						|
 		return 0;
 | 
						|
 	}
 | 
						|
 
 | 
						|
-	if(!im->colorsTotal) {
 | 
						|
-		gdImageDestroy(im);
 | 
						|
-		return 0;
 | 
						|
-	}
 | 
						|
-
 | 
						|
 	/* Check for open colors at the end, so
 | 
						|
 	 * we can reduce colorsTotal and ultimately
 | 
						|
 	 * BitsPerPixel */
 | 
						|
@@ -351,6 +346,11 @@ terminated:
 | 
						|
 		}
 | 
						|
 	}
 | 
						|
 
 | 
						|
+	if(!im->colorsTotal) {
 | 
						|
+		gdImageDestroy(im);
 | 
						|
+		return 0;
 | 
						|
+	}
 | 
						|
+
 | 
						|
 	return im;
 | 
						|
 }
 | 
						|
 
 | 
						|
@@ -447,7 +447,7 @@ static int
 | 
						|
 GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP)
 | 
						|
 {
 | 
						|
 	int i, j, ret;
 | 
						|
-	unsigned char count;
 | 
						|
+	int count;
 | 
						|
 
 | 
						|
 	if(flag) {
 | 
						|
 		scd->curbit = 0;
 | 
						|
 | 
						|
-- 
 | 
						|
2.13.6
 | 
						|
 |