|  | @@ -281,7 +281,7 @@ void locate_library_file(Elf32_Ehdr* ehdr, Elf32_Dyn* dynamic, int is_suid, stru
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	/* If this is a fully resolved name, our job is easy */
 | 
	
		
			
				|  |  |  	if (stat (lib->name, &filestat) == 0) {
 | 
	
		
			
				|  |  | -		lib->path = lib->name;
 | 
	
		
			
				|  |  | +		lib->path = strdup(lib->name);
 | 
	
		
			
				|  |  |  		return;
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -470,7 +470,7 @@ static struct library * find_elf_interpreter(Elf32_Ehdr* ehdr)
 | 
	
		
			
				|  |  |  			return NULL;
 | 
	
		
			
				|  |  |  		newlib->name = malloc(strlen(s)+1);
 | 
	
		
			
				|  |  |  		strcpy(newlib->name, s);
 | 
	
		
			
				|  |  | -		newlib->path = newlib->name;
 | 
	
		
			
				|  |  | +		newlib->path = strdup(newlib->name);
 | 
	
		
			
				|  |  |  		newlib->resolved = 1;
 | 
	
		
			
				|  |  |  		newlib->next = NULL;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -664,14 +664,12 @@ int main( int argc, char** argv)
 | 
	
		
			
				|  |  |  			printf("\tnot a dynamic executable\n");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  		for (cur = lib_list; cur; cur=cur->next) {
 | 
	
		
			
				|  |  | +			free(cur->name);
 | 
	
		
			
				|  |  | +			cur->name=NULL;
 | 
	
		
			
				|  |  |  			if (cur->path && cur->path != not_found) {
 | 
	
		
			
				|  |  |  				free(cur->path);
 | 
	
		
			
				|  |  |  				cur->path=NULL;
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -			if (cur->name) {
 | 
	
		
			
				|  |  | -				free(cur->name);
 | 
	
		
			
				|  |  | -				cur->name=NULL;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		lib_list=NULL;
 | 
	
		
			
				|  |  |  	}
 |