MFC: sbin/mount/mount.c 1.80
Resolve the mount point's path with realpath(2) before checking if file system is mounted. This prevevents duplicated mounts. The change I made against the original patch is to fall back to the given path on realpath(2) failure instead of exiting with an error. Submitted by: Andreas Kohn <andreas@syndrom23.de> PR: bin/89782
This commit is contained in:
parent
ce4fb5cac7
commit
2bb373ae84
@ -335,14 +335,21 @@ ismounted(fs, mntbuf, mntsize)
|
||||
struct statfs *mntbuf;
|
||||
int mntsize;
|
||||
{
|
||||
char realfsfile[PATH_MAX];
|
||||
int i;
|
||||
|
||||
if (fs->fs_file[0] == '/' && fs->fs_file[1] == '\0')
|
||||
/* the root file system can always be remounted */
|
||||
return (0);
|
||||
|
||||
/* The user may have specified a symlink in fstab, resolve the path */
|
||||
if (realpath(fs->fs_file, realfsfile) == NULL) {
|
||||
/* Cannot resolve the path, use original one */
|
||||
strlcpy(realfsfile, fs->fs_file, sizeof(realfsfile));
|
||||
}
|
||||
|
||||
for (i = mntsize - 1; i >= 0; --i)
|
||||
if (strcmp(fs->fs_file, mntbuf[i].f_mntonname) == 0 &&
|
||||
if (strcmp(realfsfile, mntbuf[i].f_mntonname) == 0 &&
|
||||
(!isremountable(fs->fs_vfstype) ||
|
||||
strcmp(fs->fs_spec, mntbuf[i].f_mntfromname) == 0))
|
||||
return (1);
|
||||
|
Loading…
x
Reference in New Issue
Block a user