svn commit: r186291 - head/sbin/mount
David E. O'Brien
obrien at FreeBSD.org
Thu Dec 18 18:44:47 UTC 2008
Author: obrien
Date: Thu Dec 18 18:44:46 2008
New Revision: 186291
URL: http://svn.freebsd.org/changeset/base/186291
Log:
Be a little bit more pestimistic in argument handling - check if we've
overflown our internal buffer (though after the fact), and s/strncpy/strlcpy/
Reviewed by: rodrigc
Obtained from: Juniper Networks
Modified:
head/sbin/mount/mount.c
head/sbin/mount/mount_fs.c
Modified: head/sbin/mount/mount.c
==============================================================================
--- head/sbin/mount/mount.c Thu Dec 18 18:29:15 2008 (r186290)
+++ head/sbin/mount/mount.c Thu Dec 18 18:44:46 2008 (r186291)
@@ -68,6 +68,8 @@ static const char rcsid[] =
#define MOUNT_META_OPTION_FSTAB "fstab"
#define MOUNT_META_OPTION_CURRENT "current"
+#define MAX_ARGS 100
+
int debug, fstab_style, verbose;
char *catopt(char *, const char *);
@@ -501,7 +503,7 @@ int
mountfs(const char *vfstype, const char *spec, const char *name, int flags,
const char *options, const char *mntopts)
{
- char *argv[100];
+ char *argv[MAX_ARGS];
struct statfs sf;
int argc, i, ret;
char *optbuf, execname[PATH_MAX], mntpath[PATH_MAX];
@@ -546,6 +548,10 @@ mountfs(const char *vfstype, const char
argv[argc++] = strdup(name);
argv[argc] = NULL;
+ if (MAX_ARGS <= argc )
+ errx(1, "Cannot process more than %d mount arguments",
+ MAX_ARGS);
+
if (debug) {
if (use_mountprog(vfstype))
printf("exec: mount_%s", vfstype);
Modified: head/sbin/mount/mount_fs.c
==============================================================================
--- head/sbin/mount/mount_fs.c Thu Dec 18 18:29:15 2008 (r186290)
+++ head/sbin/mount/mount_fs.c Thu Dec 18 18:44:46 2008 (r186291)
@@ -88,7 +88,7 @@ mount_fs(const char *vfstype, int argc,
char *p, *val;
int ret;
- strncpy(fstype, vfstype, sizeof(fstype));
+ strlcpy(fstype, vfstype, sizeof(fstype));
memset(errmsg, 0, sizeof(errmsg));
getmnt_silent = 1;
More information about the svn-src-all
mailing list