| 
					
				 | 
			
			
				@@ -0,0 +1,39 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Subject: Buffer overflow in the mconvert function allows remote attackers to cause a denial of service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ID: CVE-2014-3478 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Author: Christos Zoulas <christos@zoulas.com> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Date: Wed Jun 4 17:36:34 2014 +0000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Origin: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    commit 27a14bc7ba285a0a5ebfdb55e54001aa11932b08 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Debian-Author: Holger Levsen <holger@debian.org> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Comment: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ made apply cleanly based on [origin] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Reviewed-By: Christoph Biedl <debian.axhn@manchmal.in-ulm.de> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Last-Update: 2014-09-07 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Correctly compute the truncated pascal string size (Francisco Alonso and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Jan Kaluza at RedHat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- a/src/softmagic.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++++ b/src/softmagic.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -800,10 +800,18 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		return 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	case FILE_PSTRING: { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		char *ptr1 = p->s, *ptr2 = ptr1 + file_pstring_length_size(m); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		size_t sz = file_pstring_length_size(m); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		char *ptr1 = p->s, *ptr2 = ptr1 + sz; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		size_t len = file_pstring_get_length(m, ptr1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		if (len >= sizeof(p->s)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-			len = sizeof(p->s) - 1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		if (len >= sizeof(p->s)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			/* 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			 * The size of the pascal string length (sz) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			 * is 1, 2, or 4. We need at least 1 byte for NUL 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			 * termination, but we've already truncated the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			 * string by p->s, so we need to deduct sz. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			 */  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			len = sizeof(p->s) - sz; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		while (len--) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 			*ptr1++ = *ptr2++; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		*ptr1 = '\0'; 
			 |