[BUG] config: fix wrong handling of too large argument count

Holger Just reported that running ACLs with too many args caused
a segfault during config parsing. This is caused by a wrong test
on argument count. In case of too many arguments on a config line,
the last one was not correctly zeroed. This is now done and we
report the error indicating what part had been truncated.
This commit is contained in:
Willy Tarreau 2009-11-09 21:16:53 +01:00
parent 7433c2a4b3
commit 3b39c1446b

View File

@ -3697,6 +3697,21 @@ int readcfgfile(const char *file)
if (!**args) if (!**args)
continue; continue;
if (*line) {
/* we had to stop due to too many args.
* Let's terminate the string, print the offending part then cut the
* last arg.
*/
while (*line && *line != '#' && *line != '\n' && *line != '\r')
line++;
*line = '\0';
Alert("parsing [%s:%d]: line too long, truncating at word %d, position %d : <%s>.\n",
file, linenum, arg + 1, args[arg] - thisline + 1, args[arg]);
err_code |= ERR_ALERT | ERR_FATAL;
args[arg] = line;
}
/* zero out remaining args and ensure that at least one entry /* zero out remaining args and ensure that at least one entry
* is zeroed out. * is zeroed out.
*/ */