From 074f0ea9799b2fa5297eb120d68e0a97cf1b40ac Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Sun, 9 Oct 2016 00:13:46 +0200 Subject: Normalize path of translators. * libdiskfs/dir-lookup.c (diskfs_S_dir_lookup): Strip trailing slashes. * libnetfs/dir-lookup.c (netfs_S_dir_lookup): Likewise. --- libdiskfs/dir-lookup.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libdiskfs') 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. */ -- cgit v1.2.3