Eric Andersen před 21 roky
rodič
revize
f0bc0bdd2c
1 změnil soubory, kde provedl 4 přidání a 6 odebrání
  1. 4 6
      utils/ldd.c

+ 4 - 6
utils/ldd.c

@@ -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;
 	}