diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/librarian/library.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/librarian/library.c b/src/librarian/library.c index a4d4e97f..bf922d60 100644 --- a/src/librarian/library.c +++ b/src/librarian/library.c @@ -175,6 +175,8 @@ int EmuLib_GetWeak(library_t* lib, const char* name, uintptr_t *offs, uintptr_t void* sym; if((sym = ElfGetWeakSymbolStartEnd(lib->e.elf, &start, &end, name, version, vername, local, veropt))) { + if(asked_size && asked_size!=end-start) + return 0; *offs = start; *sz = end-start; *weak = 1; @@ -213,6 +215,8 @@ int EmuLib_GetGlobal(library_t* lib, const char* name, uintptr_t *offs, uintptr_ void* sym; if((sym = ElfGetGlobalSymbolStartEnd(lib->e.elf, &start, &end, name, version, vername, local, veropt))) { + if(asked_size && asked_size!=end-start) + return 0; *offs = start; *sz = end-start; *weak = 0; @@ -232,6 +236,8 @@ int EmuLib_GetLocal(library_t* lib, const char* name, uintptr_t *offs, uintptr_t void* sym; if((sym = ElfGetLocalSymbolStartEnd(lib->e.elf, &start, &end, name, version, vername, local, veropt))) { + if(asked_size && asked_size!=end-start) + return 0; *offs = start; *sz = end-start; *weak = 0; |