diff options
author | Yongcheng Yang <yongcheng.yang@gmail.com> | 2015-12-11 11:01:17 -0500 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2015-12-11 11:22:25 -0500 |
commit | a9a7728d874398c855e386d9583cf05e681ecc1c (patch) | |
tree | 156f9b98d2d619fd3bfb5f924e9e0db7879f75da | |
parent | 9c3d8687c96b7fe4a7920dc474e91f190b6d8f37 (diff) | |
download | nfs-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.c | 11 |
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; |