diff options
author | Rich Felker <dalias@aerifal.cx> | 2013-09-09 13:39:08 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2013-09-09 13:39:08 -0400 |
commit | ff4be700d0f316e043de8b3cf03ad64e086f0525 (patch) | |
tree | 86a1c072c091e79f4f7592d810a2b378fe6d203b | |
parent | 067aea7c9b688e61f69aed62b9b52e536948b273 (diff) | |
download | musl-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.c | 2 |
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"; |