summaryrefslogtreecommitdiff
path: root/src/ldso/dynlink.c
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2013-09-09 13:39:08 -0400
committerRich Felker <dalias@aerifal.cx>2013-09-09 13:39:08 -0400
commitff4be700d0f316e043de8b3cf03ad64e086f0525 (patch)
tree86a1c072c091e79f4f7592d810a2b378fe6d203b /src/ldso/dynlink.c
parent067aea7c9b688e61f69aed62b9b52e536948b273 (diff)
downloadmusl-ff4be700d0f316e043de8b3cf03ad64e086f0525.tar.gz
do not use default when dynamic linker fails to open existing path file
if fopen fails for a reason other than ENOENT, we must assume the intent is that the path file be used. failure may be due to misconfiguration or intentional resource-exhaustion attack (against suid programs), in which case falling back to loading libraries from an unintended path could be dangerous.
Diffstat (limited to 'src/ldso/dynlink.c')
-rw-r--r--src/ldso/dynlink.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/ldso/dynlink.c b/src/ldso/dynlink.c
index 6d3d08ed..a89e7432 100644
--- a/src/ldso/dynlink.c
+++ b/src/ldso/dynlink.c
@@ -614,6 +614,8 @@ static struct dso *load_library(const char *name, struct dso *needed_by)
sys_path = "";
}
fclose(f);
+ } else if (errno != ENOENT) {
+ sys_path = "";
}
}
if (!sys_path) sys_path = "/lib:/usr/local/lib:/usr/lib";