diff --git a/mld/symtab.c b/mld/symtab.c index 992802c..9417673 100644 --- a/mld/symtab.c +++ b/mld/symtab.c @@ -50,11 +50,12 @@ int symtab_push(struct symbol_table *symtab, const Elf32_Sym *sym) int symtab_get(struct symbol_table *symtab, Elf32_Sym **res, const char *name, int32_t obj_idx) { - for (size_t i = 0; i < symtab->len; i++) { + for (size_t i = 1; i < symtab->len; i++) { Elf32_Sym *sym = &symtab->syms[i]; const char *symname = symtab->strtab->data + B32(sym->st_name); if (strcmp(name, symname) != 0) continue; + // only allow retrevial of local variables from the // same object if (sym->st_info >> 4 != STB_GLOBAL && symtab->map != NULL && diff --git a/mld/vgcore.4024670 b/mld/vgcore.4024670 deleted file mode 100644 index 4c6b5c4..0000000 Binary files a/mld/vgcore.4024670 and /dev/null differ