mirror of
https://github.com/freebsd/freebsd-src
synced 2024-09-06 17:18:32 +00:00
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
This commit is contained in:
parent
5773d864f9
commit
fce5f960ba
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=186291
|
@ -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 *spec, const char *name, int flags,
|
|||
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);
|
||||
|
|
|
@ -88,7 +88,7 @@ mount_fs(const char *vfstype, int argc, char *argv[])
|
|||
char *p, *val;
|
||||
int ret;
|
||||
|
||||
strncpy(fstype, vfstype, sizeof(fstype));
|
||||
strlcpy(fstype, vfstype, sizeof(fstype));
|
||||
memset(errmsg, 0, sizeof(errmsg));
|
||||
|
||||
getmnt_silent = 1;
|
||||
|
|
Loading…
Reference in a new issue