Passing a path like /export1 to unexportfs_parsed() matches not only
/export1, but /export11, /export100, /export1forthemoney, etc. which can
result in some nasty surprises when unexporting individual exports.
Signed-off-by: Scott Mayhew <[email protected]>
---
utils/exportfs/exportfs.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
index b7a910e..a763272 100644
--- a/utils/exportfs/exportfs.c
+++ b/utils/exportfs/exportfs.c
@@ -345,6 +345,8 @@ unexportfs_parsed(char *hname, char *path, int verbose)
nlen--;
for (exp = exportlist[htype].p_head; exp; exp = exp->m_next) {
+ if (strlen(exp->m_export.e_path) != nlen)
+ continue;
if (path && strncmp(path, exp->m_export.e_path, nlen))
continue;
if (htype != exp->m_client->m_type)
--
2.7.4
On 12/15/2016 02:37 PM, Scott Mayhew wrote:
> Passing a path like /export1 to unexportfs_parsed() matches not only
> /export1, but /export11, /export100, /export1forthemoney, etc. which can
> result in some nasty surprises when unexporting individual exports.
>
> Signed-off-by: Scott Mayhew <[email protected]>
Committed...
steved.
> ---
> utils/exportfs/exportfs.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
> index b7a910e..a763272 100644
> --- a/utils/exportfs/exportfs.c
> +++ b/utils/exportfs/exportfs.c
> @@ -345,6 +345,8 @@ unexportfs_parsed(char *hname, char *path, int verbose)
> nlen--;
>
> for (exp = exportlist[htype].p_head; exp; exp = exp->m_next) {
> + if (strlen(exp->m_export.e_path) != nlen)
> + continue;
> if (path && strncmp(path, exp->m_export.e_path, nlen))
> continue;
> if (htype != exp->m_client->m_type)
> -- 2.7.4
>