diff options
author | mux <mux@FreeBSD.org> | 2002-07-24 19:50:00 +0000 |
---|---|---|
committer | mux <mux@FreeBSD.org> | 2002-07-24 19:50:00 +0000 |
commit | 0d2eba51d0b1eeb99cd7d641212db6fe858e512d (patch) | |
tree | 7b795423eb20c1f316ae6e47fad3afa8980e2376 /sys/kern/vfs_mount.c | |
parent | 17db4f92a12aafffaa956b8ccb10568cbf3a2505 (diff) | |
download | FreeBSD-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.c | 19 |
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) |