mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-08 08:07:10 +02:00
[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:
parent
7433c2a4b3
commit
3b39c1446b
@ -3697,6 +3697,21 @@ int readcfgfile(const char *file)
|
||||
if (!**args)
|
||||
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
|
||||
* is zeroed out.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user