Skip to content

Commit d43e470

Browse files
author
whitequark
committedAug 1, 2015
libdyld: fix DT_HASH address calculation.
1 parent 04934ff commit d43e470

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed
 

Diff for: ‎software/libdyld/dyld.c

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ static int fixup_rela(Elf32_Addr base, Elf32_Rela *rela,
2121
value = resolve_import(&strtab[sym->st_name]);
2222
if(value == 0) {
2323
static char error[256];
24-
error[scnprintf(error, sizeof(error), "ELF object has an unresolved symbol: %s",
25-
&strtab[sym->st_name])] = 0;
24+
snprintf(error, sizeof(error),
25+
"ELF object has an unresolved symbol: %s", &strtab[sym->st_name]);
2626
*error_out = error;
2727
return 0;
2828
}
@@ -95,7 +95,7 @@ int dyld_load(void *shlib, Elf32_Addr base,
9595
case DT_RELASZ: relanum = dyn->d_un.d_val / sizeof(Elf32_Rela); break;
9696
case DT_JMPREL: pltrel = (Elf32_Rela *)(base + dyn->d_un.d_ptr); break;
9797
case DT_PLTRELSZ: pltrelnum = dyn->d_un.d_val / sizeof(Elf32_Rela); break;
98-
case DT_HASH: hash = (Elf32_Word *)dyn->d_un.d_val; break;
98+
case DT_HASH: hash = (Elf32_Word *)(base + dyn->d_un.d_ptr); break;
9999
case DT_INIT: init = dyn->d_un.d_val; break;
100100

101101
case DT_REL:

0 commit comments

Comments
 (0)