summaryrefslogtreecommitdiff
path: root/elf/dl-open.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2004-10-27 21:39:59 +0000
committerJakub Jelinek <jakub@redhat.com>2004-10-27 21:39:59 +0000
commit0b5cfa4e0b7c9dc2cd81635307613c86c0f5e200 (patch)
treed9bf37b1a193cb3a52c598349d33c61c00a6aeca /elf/dl-open.c
parentaa85b49673c934c0eeeec9e6e302f94fa1b165ab (diff)
Diffstat (limited to 'elf/dl-open.c')
-rw-r--r--elf/dl-open.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 2ab1e307a4..294a523aac 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -570,6 +570,12 @@ _dl_open (const char *file, int mode, const void *caller_dlopen, Lmid_t nsid)
no more namespaces available for dlmopen()"));
}
}
+ /* Never allow loading a DSO in a namespace which is empty. Such
+ direct placements is only causing problems. */
+ else if (nsid != LM_ID_BASE && nsid != __LM_ID_CALLER
+ && GL(dl_ns)[nsid]._ns_nloaded == 0)
+ GLRO(dl_signal_error) (EINVAL, file, NULL,
+ N_("invalid target namespace in dlmopen()"));
args.file = file;
args.mode = mode;