summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Mehnert <frank.mehnert@kernkonzept.com>2024-02-20 08:32:20 +0100
committerWaldemar Brodkorb <wbx@openadk.org>2024-02-20 19:37:18 +0100
commit8fa5437044b7ebc6971f987644d48507e0fbc5f9 (patch)
tree32d314d45ab1a7b28a31ba831c3ca4526ad5b16a
parent0ab4d9d49d97cba0fc43f7c159e377b16179c821 (diff)
ldso: add null-pointer check
There is a check for (*rpnt == NULL) a few lines above but the "else" case performing an allocation does only exist if SHARED is not defined. If SHARED is defined, the allocation is not performed and it may happen (at least in theory) that *rpnt == NULL when executing (*rpnt)->dyn = tpnt; Add the null-pointer check. Signed-off-by: Frank Mehnert <frank.mehnert@kernkonzept.com>
-rw-r--r--ldso/ldso/dl-elf.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ldso/ldso/dl-elf.c b/ldso/ldso/dl-elf.c
index ac6db59e0..4f50d62b7 100644
--- a/ldso/ldso/dl-elf.c
+++ b/ldso/ldso/dl-elf.c
@@ -900,7 +900,8 @@ struct elf_resolve *_dl_load_elf_shared_library(unsigned int rflags,
_dl_memset(*rpnt, 0, sizeof(struct dyn_elf));
}
#endif
- (*rpnt)->dyn = tpnt;
+ if (*rpnt)
+ (*rpnt)->dyn = tpnt;
tpnt->usage_count++;
if (tpnt->rtld_flags & RTLD_NODELETE)
tpnt->usage_count++;