summaryrefslogtreecommitdiff
path: root/libdiskfs/dir-lookup.c
diff options
context:
space:
mode:
Diffstat (limited to 'libdiskfs/dir-lookup.c')
-rw-r--r--libdiskfs/dir-lookup.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/libdiskfs/dir-lookup.c b/libdiskfs/dir-lookup.c
index 63bba78e..a0c368b1 100644
--- a/libdiskfs/dir-lookup.c
+++ b/libdiskfs/dir-lookup.c
@@ -286,6 +286,7 @@ diskfs_S_dir_lookup (struct protid *dircred,
{
char *translator_path = strdupa (relpath);
+ char *end;
char *complete_path;
if (nextname != NULL)
{
@@ -293,12 +294,17 @@ diskfs_S_dir_lookup (struct protid *dircred,
NEXTNAME points to the next component, locate
the end of the current component and use it
to trim TRANSLATOR_PATH. */
- char *end = nextname;
+ end = nextname;
while (*end != 0)
end--;
translator_path[end - filename_start] = '\0';
}
+ /* Trim trailing slashes. */
+ end = &translator_path[strlen (translator_path) - 1];
+ while (*end == '/' && end >= translator_path)
+ *end = '\0', end--;
+
if (dircred->po->path == NULL
|| !strcmp (dircred->po->path,"."))
/* dircred is the root directory. */