diff options
| author | Ian Dowse <iedowse@FreeBSD.org> | 2001-05-19 18:18:20 +0000 |
|---|---|---|
| committer | Ian Dowse <iedowse@FreeBSD.org> | 2001-05-19 18:18:20 +0000 |
| commit | abe339b2a65b734b5d91dacf521dd66d3efeff27 (patch) | |
| tree | 578e75ce30a09e7cf5433ce9d60512a9d96d4b0f | |
| parent | 2db7a70179d77399e111b940613a509a04c23c03 (diff) | |
Notes
| -rw-r--r-- | sbin/mountd/mountd.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/sbin/mountd/mountd.c b/sbin/mountd/mountd.c index ffb1b6ebb525..268b210e127c 100644 --- a/sbin/mountd/mountd.c +++ b/sbin/mountd/mountd.c @@ -1596,7 +1596,8 @@ do_mount(ep, grp, exflags, anoncrp, dirp, dirplen, fsb) int dirplen; struct statfs *fsb; { - char *cp = (char *)NULL; + struct statfs fsb1; + char *cp = NULL; u_int32_t **addrp; int done; char savedc = '\0'; @@ -1705,6 +1706,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); + } } if (addrp) { ++addrp; |
