| 
					
				 | 
			
			
				@@ -0,0 +1,33 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Subject: The cdf_check_stream_offset function in relies on incorrect sector-size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ID: CVE-2014-3479 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Author: Christos Zoulas <christos@zoulas.com> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Date: Wed Jun 4 17:26:07 2014 +0000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Origin: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    commit 36fadd29849b8087af9f4586f89dbf74ea45be67 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Debian-Author: Holger Levsen <holger@debian.org> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Reviewed-By: Christoph Biedl <debian.axhn@manchmal.in-ulm.de> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Last-Update: 2014-09-07 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Use the proper sector size when checking stream offsets (Francisco Alonso and 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Jan Kaluza at RedHat) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- a/src/cdf.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++++ b/src/cdf.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -267,13 +267,15 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	const char *b = (const char *)sst->sst_tab; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	const char *e = ((const char *)p) + tail; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	size_t ss = sst->sst_dirlen < h->h_min_size_standard_stream ? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	    CDF_SHORT_SEC_SIZE(h) : CDF_SEC_SIZE(h); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	(void)&line; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	if (e >= b && (size_t)(e - b) < CDF_SEC_SIZE(h) * sst->sst_len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	if (e >= b && (size_t)(e - b) < ss * sst->sst_len) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	DPRINTF(("%d: offset begin %p end %p %" SIZE_T_FORMAT "u" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	    " >= %" SIZE_T_FORMAT "u [%" SIZE_T_FORMAT "u %" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	    SIZE_T_FORMAT "u]\n", line, b, e, (size_t)(e - b), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	    CDF_SEC_SIZE(h) * sst->sst_len, CDF_SEC_SIZE(h), sst->sst_len)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	    ss * sst->sst_len, ss, sst->sst_len)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	errno = EFTYPE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ } 
			 |