| 
					
				 | 
			
			
				@@ -0,0 +1,41 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Subject: Fix previous, reading section name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Upstream-Author: Christos Zoulas <christos@zoulas.com> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Date: Fri Feb 22 01:35:49 2013 +0000 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Origin: FILE5_12-68-g4c948c0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Last-Update: 2015-02-15 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+(prequisite for CVE-2014-9653) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+--- a/src/readelf.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++++ b/src/readelf.c 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@@ -1013,18 +1013,23 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		return 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	/* Save offset of name section to be able to read section names later */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	name_off = off * size * strtab; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	/* Read the name of this section. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	if (pread(fd, name, sizeof(name), name_off + xsh_name) == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	/* Read offset of name section to be able to read section names later */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	if (pread(fd, xsh_addr, xsh_sizeof, off + size * strtab) == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		file_badread(ms); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	name[sizeof(name) - 1] = '\0'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-	if (strcmp(name, ".debug_info") == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+-		stripped = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++	name_off = xsh_offset; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 	for ( ; num; num--) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		/* Read the name of this section. */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		if (pread(fd, name, sizeof(name), name_off + xsh_name) == -1) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			file_badread(ms); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			return -1; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		name[sizeof(name) - 1] = '\0'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++		if (strcmp(name, ".debug_info") == 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++			stripped = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				++ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 		if (pread(fd, xsh_addr, xsh_sizeof, off) < (ssize_t)xsh_sizeof) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 			file_badread(ms); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 			return -1; 
			 |