mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-04 12:41:00 +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. (cherry picked from commit 3b39c1446b9bd842324e87782a836948a07c25a2)
This commit is contained in:
parent
c438242878
commit
7bb651ec1d
@ -3996,6 +3996,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…
x
Reference in New Issue
Block a user