mirror of
https://github.com/freebsd/freebsd-src.git
synced 2024-11-28 19:52:44 +00:00
Make sure we don't overflow the path buffer. Exit if we do.
Obtained from or inspired by: A similar change in OpenBSD by theo
This commit is contained in:
parent
e00e592a7a
commit
8a20f85ccb
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=36785
@ -45,7 +45,7 @@ static char const copyright[] =
|
|||||||
static char sccsid[] = "@(#)mv.c 8.2 (Berkeley) 4/2/94";
|
static char sccsid[] = "@(#)mv.c 8.2 (Berkeley) 4/2/94";
|
||||||
#endif
|
#endif
|
||||||
static const char rcsid[] =
|
static const char rcsid[] =
|
||||||
"$Id: mv.c,v 1.18 1998/05/15 06:25:17 charnier Exp $";
|
"$Id: mv.c,v 1.19 1998/05/25 22:44:16 steve Exp $";
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
@ -80,7 +80,7 @@ main(argc, argv)
|
|||||||
register char *p, *endp;
|
register char *p, *endp;
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
int ch;
|
int ch;
|
||||||
char path[MAXPATHLEN + 1];
|
char path[MAXPATHLEN];
|
||||||
|
|
||||||
while ((ch = getopt(argc, argv, "fi")) != -1)
|
while ((ch = getopt(argc, argv, "fi")) != -1)
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@ -112,6 +112,8 @@ main(argc, argv)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* It's a directory, move each file into it. */
|
/* It's a directory, move each file into it. */
|
||||||
|
if (strlen(argv[argc - 1]) > sizeof(path) - 1)
|
||||||
|
errx(1, "%s: destination pathname too long", *argv);
|
||||||
(void)strcpy(path, argv[argc - 1]);
|
(void)strcpy(path, argv[argc - 1]);
|
||||||
baselen = strlen(path);
|
baselen = strlen(path);
|
||||||
endp = &path[baselen];
|
endp = &path[baselen];
|
||||||
|
Loading…
Reference in New Issue
Block a user