summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYongcheng Yang <yongcheng.yang@gmail.com>2015-12-11 11:01:17 -0500
committerSteve Dickson <steved@redhat.com>2015-12-11 11:22:25 -0500
commita9a7728d874398c855e386d9583cf05e681ecc1c (patch)
tree156f9b98d2d619fd3bfb5f924e9e0db7879f75da
parent9c3d8687c96b7fe4a7920dc474e91f190b6d8f37 (diff)
downloadnfs-utils-a9a7728d874398c855e386d9583cf05e681ecc1c.tar.gz
nfs-utils-a9a7728d874398c855e386d9583cf05e681ecc1c.tar.xz
nfs-utils-a9a7728d874398c855e386d9583cf05e681ecc1c.zip
exportfs: Deal with path's trailing "/" in unexportfs_parsed()
When unexport directory, it's possible that the specified path ends with a '/'. So we need to deal with it to find the matched entry. If not, there will be error like "Could not find '*:/some_path/' to unexport." Signed-off-by: Yongcheng Yang <yongcheng.yang@gmail.com> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/exportfs/exportfs.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
index c7a79a6..a9151ff 100644
--- a/utils/exportfs/exportfs.c
+++ b/utils/exportfs/exportfs.c
@@ -405,8 +405,17 @@ unexportfs_parsed(char *hname, char *path, int verbose)
hname = ai->ai_canonname;
}
+ /*
+ * It's possible the specified path ends with a '/'. But
+ * the entry from exportlist won't has the trailing '/',
+ * so need to deal with it.
+ */
+ size_t nlen = strlen(path);
+ while (path[nlen - 1] == '/')
+ nlen--;
+
for (exp = exportlist[htype].p_head; exp; exp = exp->m_next) {
- if (path && strcmp(path, exp->m_export.e_path))
+ if (path && strncmp(path, exp->m_export.e_path, nlen))
continue;
if (htype != exp->m_client->m_type)
continue;