]> sourceware.org Git - glibc.git/commitdiff
hurd getcwd: Allow unknown root directory
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Thu, 29 Aug 2019 23:08:09 +0000 (01:08 +0200)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Thu, 29 Aug 2019 23:08:09 +0000 (01:08 +0200)
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.

ChangeLog
sysdeps/mach/hurd/getcwd.c

index c3cae2a11e662ac0eba951831cfa75062b5d1c45..d2ec5d5ac0408d253cf70ffeb1e5704c58aaf291 100644 (file)
--- 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.
index 93b7b1de58f008d4a1c39a01c2526b18fdb6ab03..7481ae985759d9881ad8bbf77dd3c542049689eb 100644 (file)
@@ -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)
This page took 0.074496 seconds and 5 git commands to generate.