summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_mount.c
diff options
context:
space:
mode:
authormux <mux@FreeBSD.org>2002-07-24 19:50:00 +0000
committermux <mux@FreeBSD.org>2002-07-24 19:50:00 +0000
commit0d2eba51d0b1eeb99cd7d641212db6fe858e512d (patch)
tree7b795423eb20c1f316ae6e47fad3afa8980e2376 /sys/kern/vfs_mount.c
parent17db4f92a12aafffaa956b8ccb10568cbf3a2505 (diff)
downloadFreeBSD-src-0d2eba51d0b1eeb99cd7d641212db6fe858e512d.zip
FreeBSD-src-0d2eba51d0b1eeb99cd7d641212db6fe858e512d.tar.gz
Fix a stupid bug where I wasn't initializing the names
of 0-length mount options.
Diffstat (limited to 'sys/kern/vfs_mount.c')
-rw-r--r--sys/kern/vfs_mount.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/sys/kern/vfs_mount.c b/sys/kern/vfs_mount.c
index 89f9940..bdfb1c6 100644
--- a/sys/kern/vfs_mount.c
+++ b/sys/kern/vfs_mount.c
@@ -226,21 +226,22 @@ vfs_buildopts(struct uio *auio, struct vfsoptlist **options)
namelen = auio->uio_iov[i].iov_len;
optlen = auio->uio_iov[i + 1].iov_len;
opt->name = malloc(namelen, M_MOUNT, M_WAITOK);
- opt->len = optlen;
- if (optlen == 0) {
- opt->value = NULL;
+ opt->value = NULL;
+ if (auio->uio_segflg == UIO_SYSSPACE) {
+ bcopy(auio->uio_iov[i].iov_base, opt->name, namelen);
} else {
+ error = copyin(auio->uio_iov[i].iov_base, opt->name,
+ namelen);
+ if (error)
+ goto bad;
+ }
+ opt->len = optlen;
+ if (optlen != 0) {
opt->value = malloc(optlen, M_MOUNT, M_WAITOK);
if (auio->uio_segflg == UIO_SYSSPACE) {
- bcopy(auio->uio_iov[i].iov_base, opt->name,
- namelen);
bcopy(auio->uio_iov[i + 1].iov_base, opt->value,
optlen);
} else {
- error = copyin(auio->uio_iov[i].iov_base,
- opt->name, namelen);
- if (error)
- goto bad;
error = copyin(auio->uio_iov[i + 1].iov_base,
opt->value, optlen);
if (error)
OpenPOWER on IntegriCloud