list_for_each_entry(p, &library_paths, list) {
snprintf(path, sizeof(path), "%s/%s", p->path, file);
- fd = open(path, O_RDONLY);
+ fd = open(path, O_RDONLY|O_CLOEXEC);
if (fd >= 0) {
*fullpath = strdup(path);
break;
{
unsigned int dyn_offset, dyn_size;
unsigned int load_offset, load_vaddr;
+ unsigned int interp_offset;
if (elf_find_section(map, PT_LOAD, &load_offset, NULL, &load_vaddr)) {
ERROR("failed to load the .load section from %s\n", path);
return -1;
}
+ if (elf_find_section(map, PT_INTERP, &interp_offset, NULL, NULL) == 0) {
+ add_path_and_deps(map+interp_offset, 1, -1, 0);
+ }
+
int clazz = map[EI_CLASS];
if (clazz == ELFCLASS32)