X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ldso%2Fdynlink.c;h=502e52c51a852436e6cd57e247b859aba4a4c202;hb=c1e5d243b7e39b2fbfb17144608ce045575d8e95;hp=f9ac0100c51d2c7ffa18f0f0d56a5516bbca010b;hpb=cbecda0b506c7d49a2f7fe3dc44e0e3dcf663764;p=musl diff --git a/ldso/dynlink.c b/ldso/dynlink.c index f9ac0100..502e52c5 100644 --- a/ldso/dynlink.c +++ b/ldso/dynlink.c @@ -1,6 +1,5 @@ #define _GNU_SOURCE #define SYSCALL_NO_TLS 1 -#include #include #include #include @@ -556,6 +555,20 @@ static void reclaim_gaps(struct dso *dso) } } +static ssize_t read_loop(int fd, void *p, size_t n) +{ + for (size_t i=0; i=0) { + size_t n = 0; + if (!fstat(fd, &st)) n = st.st_size; + if ((sys_path = malloc(n+1))) + sys_path[n] = 0; + if (!sys_path || read_loop(fd, sys_path, n)<0) { free(sys_path); sys_path = ""; } - fclose(f); + close(fd); } else if (errno != ENOENT) { sys_path = ""; }