This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc] hurd getcwd: Allow unknown root directory


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=90f0f97ccba34efa6ac8d7d4d77db5d473e8da32

commit 90f0f97ccba34efa6ac8d7d4d77db5d473e8da32
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Fri Aug 30 01:08:09 2019 +0200

    hurd getcwd: Allow unknown root directory
    
    To be efficient, the remap translator simply returns ports from the underlying
    filesystem, and thus the root directory found through browsing '..' is the
    underlying root, not the remap root. This should not be a reason for getcwd to
    fail.
    
    * sysdeps/mach/hurd/getcwd.c (_hurd_canonicalize_directory_name_internal): Do
    not remove the heading slash if we got an unknown root directory.
    (__getcwd): Do not fail with EGRATUITOUS if we got an unknown root directory.

Diff:
---
 ChangeLog                  | 10 +++++++++-
 sysdeps/mach/hurd/getcwd.c | 12 ------------
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index c3cae2a..d2ec5d5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,12 @@
-2019-08-30  Richard Braun <rbraun@sceen.net>
+2019-08-30  Samuel Thibault  <samuel.thibault@ens-lyon.org>
+
+
+	* sysdeps/mach/hurd/getcwd.c
+	(_hurd_canonicalize_directory_name_internal): Do not remove the heading
+	slash if we got an unknown root directory. (__getcwd): Do not fail with
+	EGRATUITOUS if we got an unknown root directory.
+
+2019-08-30  Richard Braun  <rbraun@sceen.net>
 
 	* hurd/hurdselect.c (_hurd_select): Always call __io_select with no
 	timeout.
diff --git a/sysdeps/mach/hurd/getcwd.c b/sysdeps/mach/hurd/getcwd.c
index 93b7b1d..7481ae9 100644
--- a/sysdeps/mach/hurd/getcwd.c
+++ b/sysdeps/mach/hurd/getcwd.c
@@ -266,11 +266,6 @@ __hurd_canonicalize_directory_name_internal (file_t thisdir,
        So the root is our current directory.  */
     *--file_namep = '/';
 
-  if (thisid != rootid)
-    /* We did not get to our root directory. The returned name should
-       not begin with a slash.  */
-    ++file_namep;
-
   memmove (file_name, file_namep, file_name + size - file_namep);
   cleanup ();
   return file_name;
@@ -309,13 +304,6 @@ __getcwd (char *buf, size_t size)
     __USEPORT (CWDIR,
 	       __hurd_canonicalize_directory_name_internal (port,
 							    buf, size));
-  if (cwd && cwd[0] != '/')
-    {
-      /* `cwd' is an unknown root directory.  */
-      if (buf == NULL)
-	  free (cwd);
-      return __hurd_fail (EGRATUITOUS), NULL;
-    }
   return cwd;
 }
 weak_alias (__getcwd, getcwd)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]