rtld: do not process absent dynamic.

If object has no dynamic phdr, do not try to dereference NULL.  This
means that we cannot process any relocation, and that there cannot be
symbols defined, but it is up to static linker to produce meaningful
objects.

PR:	249121
Reported by:	wsh@riski.sh
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
This commit is contained in:
Konstantin Belousov 2020-09-05 22:41:31 +00:00
parent ea0a0939ef
commit 2b49b95cfa
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=365368

View File

@ -1089,7 +1089,10 @@ digest_dynamic1(Obj_Entry *obj, int early, const Elf_Dyn **dyn_rpath,
*dyn_runpath = NULL;
obj->bind_now = false;
for (dynp = obj->dynamic; dynp->d_tag != DT_NULL; dynp++) {
dynp = obj->dynamic;
if (dynp == NULL)
return;
for (; dynp->d_tag != DT_NULL; dynp++) {
switch (dynp->d_tag) {
case DT_REL: