Message ID | mvmy1loibpj.fsf@suse.de |
---|---|
State | New |
Headers | show |
Series | rtld: properly handle root directory in load path (bug 30435) | expand |
On 2023-05-16 10:37, Andreas Schwab via Libc-alpha wrote: > Don't strip the trailing slash when checking for existence of a load path > element to handle the special case of the root directory. > --- > elf/dl-load.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) LGTM. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> > > diff --git a/elf/dl-load.c b/elf/dl-load.c > index 39c63ff1b3..2aa487b49a 100644 > --- a/elf/dl-load.c > +++ b/elf/dl-load.c > @@ -1859,7 +1859,7 @@ open_path (const char *name, size_t namelen, int mode, > test whether there is any directory at all. */ > struct __stat64_t64 st; > > - buf[buflen - namelen - 1] = '\0'; > + buf[buflen - namelen] = '\0'; > > if (__stat64_time64 (buf, &st) != 0 > || ! S_ISDIR (st.st_mode))
On 16/05/23 11:37, Andreas Schwab via Libc-alpha wrote: > Don't strip the trailing slash when checking for existence of a load path > element to handle the special case of the root directory. > --- > elf/dl-load.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/elf/dl-load.c b/elf/dl-load.c > index 39c63ff1b3..2aa487b49a 100644 > --- a/elf/dl-load.c > +++ b/elf/dl-load.c > @@ -1859,7 +1859,7 @@ open_path (const char *name, size_t namelen, int mode, > test whether there is any directory at all. */ > struct __stat64_t64 st; > > - buf[buflen - namelen - 1] = '\0'; > + buf[buflen - namelen] = '\0'; > > if (__stat64_time64 (buf, &st) != 0 > || ! S_ISDIR (st.st_mode)) Which is difference between this and another fix for this very issue [1]? And what about the testcase [2], this should really have a regression tests. [1] https://sourceware.org/pipermail/libc-alpha/2023-May/147956.html [2] https://sourceware.org/pipermail/libc-alpha/2023-May/147957.html
On 2023-05-25 08:33, Adhemerval Zanella Netto wrote: > > > On 16/05/23 11:37, Andreas Schwab via Libc-alpha wrote: >> Don't strip the trailing slash when checking for existence of a load path >> element to handle the special case of the root directory. >> --- >> elf/dl-load.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/elf/dl-load.c b/elf/dl-load.c >> index 39c63ff1b3..2aa487b49a 100644 >> --- a/elf/dl-load.c >> +++ b/elf/dl-load.c >> @@ -1859,7 +1859,7 @@ open_path (const char *name, size_t namelen, int mode, >> test whether there is any directory at all. */ >> struct __stat64_t64 st; >> >> - buf[buflen - namelen - 1] = '\0'; >> + buf[buflen - namelen] = '\0'; >> >> if (__stat64_time64 (buf, &st) != 0 >> || ! S_ISDIR (st.st_mode)) > > Which is difference between this and another fix for this very issue [1]? > And what about the testcase [2], this should really have a regression > tests. > > [1] https://sourceware.org/pipermail/libc-alpha/2023-May/147956.html > [2] https://sourceware.org/pipermail/libc-alpha/2023-May/147957.html > Ugh, sorry I missed them. I'll review the test case for inclusion. Thanks for keeping track! Sid
diff --git a/elf/dl-load.c b/elf/dl-load.c index 39c63ff1b3..2aa487b49a 100644 --- a/elf/dl-load.c +++ b/elf/dl-load.c @@ -1859,7 +1859,7 @@ open_path (const char *name, size_t namelen, int mode, test whether there is any directory at all. */ struct __stat64_t64 st; - buf[buflen - namelen - 1] = '\0'; + buf[buflen - namelen] = '\0'; if (__stat64_time64 (buf, &st) != 0 || ! S_ISDIR (st.st_mode))