about summary refs log tree commit diff
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
parent067aea7c9b688e61f69aed62b9b52e536948b273 (diff)
downloadmusl-ff4be700d0f316e043de8b3cf03ad64e086f0525.tar.gz
musl-ff4be700d0f316e043de8b3cf03ad64e086f0525.tar.xz
musl-ff4be700d0f316e043de8b3cf03ad64e086f0525.zip
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.
-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";