Fix a BSS buffer overflow caused by makeargv() writing past the end of

margv[] when an input line contains 20 or more space-separated words.
This commit is contained in:
Tim J. Robbins 2003-10-11 07:35:35 +00:00
parent 7ffba86d07
commit acb85bc034

View File

@ -59,7 +59,8 @@ int trace = 0;
FILE *fd = 0;
int margc;
int fromatty;
char *margv[20];
#define MAX_MARGV 20
char *margv[MAX_MARGV];
char cmdline[200];
jmp_buf toplevel;
static struct cmd *getcmd __P((char *));
@ -183,7 +184,7 @@ makeargv()
register char **argp = margv;
margc = 0;
for (cp = cmdline; *cp;) {
for (cp = cmdline; margc < MAX_MARGV - 1 && *cp; ) {
while (isspace(*cp))
cp++;
if (*cp == '\0')