about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/librarian/library.c6
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;