| 
					
				 | 
			
			
				@@ -0,0 +1,51 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Subject: The cdf_unpack_summary_info function allows remote attackers to cause a denial of service 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ID: CVE-2014-0237 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Author: Christos Zoulas <christos@zoulas.com> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Date: Tue May 6 18:20:39 2014 +0000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Origin: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    commit b8acc83781d5a24cc5101e525d15efe0482c280d 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    Remove loop that kept reading the same offset (Jan Kaluza) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- a/src/cdf.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++++ b/src/cdf.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -932,7 +932,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ cdf_unpack_summary_info(const cdf_stream_t *sst, const cdf_header_t *h, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+     cdf_summary_info_header_t *ssi, cdf_property_info_t **info, size_t *count) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	size_t i, maxcount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	size_t maxcount; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	const cdf_summary_info_header_t *si = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	    CAST(const cdf_summary_info_header_t *, sst->sst_tab); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	const cdf_section_declaration_t *sd = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -947,21 +947,13 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	ssi->si_os = CDF_TOLE2(si->si_os); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	ssi->si_class = si->si_class; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	cdf_swap_class(&ssi->si_class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	ssi->si_count = CDF_TOLE2(si->si_count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	ssi->si_count = CDF_TOLE4(si->si_count); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	*count = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	maxcount = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	*info = NULL; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	for (i = 0; i < CDF_TOLE4(si->si_count); i++) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		if (i >= CDF_LOOP_LIMIT) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-			DPRINTF(("Unpack summary info loop limit")); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-			errno = EFTYPE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-			return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		    info, count, &maxcount) == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-			return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	if (cdf_read_property_info(sst, h, CDF_TOLE4(sd->sd_offset), info, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	    count, &maxcount) == -1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 |