diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-09-21 15:51:51 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-09-21 15:51:51 +0200 |
| commit | 4cda6dbcfbf376ef0a00e48b4310660e3cd9bc9f (patch) | |
| tree | a69d7853860b84532fbbae4b52a48c4f95ab0967 /src | |
| parent | e34afea34613a0e8d4e96069027324944b1d1116 (diff) | |
| download | box64-4cda6dbcfbf376ef0a00e48b4310660e3cd9bc9f.tar.gz box64-4cda6dbcfbf376ef0a00e48b4310660e3cd9bc9f.zip | |
[ELFLOADER] Fixed PROTECTED symbol that were not loaded correctly
Diffstat (limited to 'src')
| -rw-r--r-- | src/elfs/elfloader.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/elfs/elfloader.c b/src/elfs/elfloader.c index f9a89cd6..a4ea5d0c 100644 --- a/src/elfs/elfloader.c +++ b/src/elfs/elfloader.c @@ -585,6 +585,10 @@ static int RelocateElfRELA(lib_t *maplib, lib_t *local_maplib, int bindnow, int int vis = ELF64_ST_VISIBILITY(sym->st_other); if(vis==STV_PROTECTED) { elfsym = ElfDynSymLookup64(head, symname); + if(elfsym) { + offs = elfsym->st_value + head->delta; + end = offs + elfsym->st_size; + } printf_log(LOG_DEBUG, "Symbol %s from %s is PROTECTED\n", symname, head->name); } else { if(bind==STB_GNU_UNIQUE) { |