summaryrefslogtreecommitdiffstats
path: root/sbin/mountd
diff options
context:
space:
mode:
Diffstat (limited to 'sbin/mountd')
-rw-r--r--sbin/mountd/mountd.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sbin/mountd/mountd.c b/sbin/mountd/mountd.c
index 303896c..3726cba 100644
--- a/sbin/mountd/mountd.c
+++ b/sbin/mountd/mountd.c
@@ -1734,6 +1734,7 @@ do_mount(ep, grp, exflags, anoncrp, dirp, dirplen, fsb)
int dirplen;
struct statfs *fsb;
{
+ struct statfs fsb1;
struct addrinfo *ai;
struct export_args *eap;
char *cp = NULL;
@@ -1835,6 +1836,13 @@ do_mount(ep, grp, exflags, anoncrp, dirp, dirplen, fsb)
}
savedc = *cp;
*cp = '\0';
+ /* Check that we're still on the same filesystem. */
+ if (statfs(dirp, &fsb1) != 0 || bcmp(&fsb1.f_fsid,
+ &fsb->f_fsid, sizeof(fsb1.f_fsid)) != 0) {
+ *cp = savedc;
+ syslog(LOG_ERR, "can't export %s", dirp);
+ return (1);
+ }
}
skip:
if (ai != NULL)
OpenPOWER on IntegriCloud