mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-09-21 22:01:31 +02:00
MINOR: cfgparse: Warn on truncated lines / files
As discussed on the list: https://www.mail-archive.com/haproxy@formilux.org/msg37698.html This patch adds warnings to the configuration parser that detect the following situations: - A line being truncated by a null byte in the middle. - A file not ending in a new line (and possibly being truncated).
This commit is contained in:
parent
70f58997f4
commit
2fd5bdb439
@ -1854,6 +1854,7 @@ int readcfgfile(const char *file)
|
||||
size_t outlen = 0;
|
||||
size_t outlinesize = 0;
|
||||
int fatal = 0;
|
||||
int missing_lf = -1;
|
||||
|
||||
if ((thisline = malloc(sizeof(*thisline) * linesize)) == NULL) {
|
||||
ha_alert("parsing [%s] : out of memory.\n", file);
|
||||
@ -1872,6 +1873,14 @@ next_line:
|
||||
char *args[MAX_LINE_ARGS + 1];
|
||||
char *line = thisline;
|
||||
|
||||
if (missing_lf != -1) {
|
||||
ha_warning("parsing [%s:%d]: Stray NUL character at position %d. "
|
||||
"This will become a hard error in HAProxy 2.3.\n",
|
||||
file, linenum, (missing_lf + 1));
|
||||
err_code |= ERR_WARN;
|
||||
missing_lf = -1;
|
||||
}
|
||||
|
||||
linenum++;
|
||||
|
||||
if (fatal >= 50) {
|
||||
@ -1909,6 +1918,10 @@ next_line:
|
||||
/* kill trailing LF */
|
||||
*(end - 1) = 0;
|
||||
}
|
||||
else {
|
||||
/* mark this line as truncated */
|
||||
missing_lf = end - line;
|
||||
}
|
||||
|
||||
/* skip leading spaces */
|
||||
while (isspace((unsigned char)*line))
|
||||
@ -2058,6 +2071,13 @@ next_line:
|
||||
}
|
||||
}
|
||||
|
||||
if (missing_lf != -1) {
|
||||
ha_warning("parsing [%s:%d]: Missing LF on last line, file might have been truncated at position %d. "
|
||||
"This will become a hard error in HAProxy 2.3.\n",
|
||||
file, linenum, (missing_lf + 1));
|
||||
err_code |= ERR_WARN;
|
||||
}
|
||||
|
||||
if (cs && cs->post_section_parser)
|
||||
err_code |= cs->post_section_parser();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user