Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Dec 2008 18:44:46 +0000 (UTC)
From:      "David E. O'Brien" <obrien@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r186291 - head/sbin/mount
Message-ID:  <200812181844.mBIIikVF049455@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200812181844.mBIIikVF049455>