summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authormm <mm@FreeBSD.org>2012-02-05 10:59:50 +0000
committermm <mm@FreeBSD.org>2012-02-05 10:59:50 +0000
commit8a4156df5d9d4f62778bb8a730daba476466c63d (patch)
tree8b7517824030e0ec68c67a09937e3de40f80e660 /sys/kern
parent6b68275a843448f1b144d4384f8e43f7304224e6 (diff)
downloadFreeBSD-src-8a4156df5d9d4f62778bb8a730daba476466c63d.zip
FreeBSD-src-8a4156df5d9d4f62778bb8a730daba476466c63d.tar.gz
Analogous to r230407 a separate path buffer in vfs_mount.c is required
for r230129. Fixes a out of bounds write to fspath. MFC after: 10 days
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/vfs_mount.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index 5fa086c..ddc17cc 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -1039,6 +1039,7 @@ vfs_domount(
struct vfsconf *vfsp;
struct nameidata nd;
struct vnode *vp;
+ char *pathbuf;
int error;
/*
@@ -1102,12 +1103,15 @@ vfs_domount(
NDFREE(&nd, NDF_ONLY_PNBUF);
vp = nd.ni_vp;
if ((fsflags & MNT_UPDATE) == 0) {
- error = vn_path_to_global_path(td, vp, fspath, MNAMELEN);
+ pathbuf = malloc(MNAMELEN, M_TEMP, M_WAITOK);
+ strcpy(pathbuf, fspath);
+ error = vn_path_to_global_path(td, vp, pathbuf, MNAMELEN);
/* debug.disablefullpath == 1 results in ENODEV */
if (error == 0 || error == ENODEV) {
- error = vfs_domount_first(td, vfsp, fspath, vp,
+ error = vfs_domount_first(td, vfsp, pathbuf, vp,
fsflags, optlist);
}
+ free(pathbuf, M_TEMP);
} else
error = vfs_domount_update(td, vp, fsflags, optlist);
mtx_unlock(&Giant);
OpenPOWER on IntegriCloud