diff options
Diffstat (limited to 'elf/dl-open.c')
-rw-r--r-- | elf/dl-open.c | 6 |
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; |