Author: markj
Date: Tue Nov  3 03:29:35 2015
New Revision: 290320
URL: https://svnweb.freebsd.org/changeset/base/290320

Log:
  Have elf_lookup() return an error if the specified non-weak symbol could
  not be found. Otherwise, relocations against such symbols will be silently
  ignored instead of causing an error to be raised.
  
  Reviewed by:  kib
  MFC after:    1 week

Modified:
  head/sys/kern/link_elf.c

Modified: head/sys/kern/link_elf.c
==============================================================================
--- head/sys/kern/link_elf.c    Tue Nov  3 00:54:14 2015        (r290319)
+++ head/sys/kern/link_elf.c    Tue Nov  3 03:29:35 2015        (r290320)
@@ -1594,6 +1594,10 @@ elf_lookup(linker_file_t lf, Elf_Size sy
        }
 
        addr = ((Elf_Addr)linker_file_lookup_symbol(lf, symbol, deps));
+       if (addr == 0 && ELF_ST_BIND(sym->st_info) != STB_WEAK) {
+               *res = 0;
+               return (EINVAL);
+       }
 
        if (elf_set_find(&set_pcpu_list, addr, &start, &base))
                addr = addr - start + base;
_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to