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)
|
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.
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user