Commit 9b7a6a99 by Carlos Martín Nieto

config: check for EOF before newline

If a line ends at EOF there is no need to check for the newline
character and doing so will cause us to read memory beyond the
allocatd memory as we check for the Windows-style new-line, which is
two bytes long.

Signed-off-by: Carlos Martín Nieto <cmn@elego.de>
parent 72946881
...@@ -537,12 +537,13 @@ static char *cfg_readline(git_config *cfg) ...@@ -537,12 +537,13 @@ static char *cfg_readline(git_config *cfg)
line_src = cfg->reader.read_ptr; line_src = cfg->reader.read_ptr;
line_end = strchr(line_src, '\n'); line_end = strchr(line_src, '\n');
while (is_linebreak(line_end))
line_end = strchr(line_end + 1, '\n');
/* no newline at EOF */ /* no newline at EOF */
if (line_end == NULL) if (line_end == NULL)
line_end = strchr(line_src, 0); line_end = strchr(line_src, 0);
else
while (is_linebreak(line_end))
line_end = strchr(line_end + 1, '\n');
while (line_src < line_end && isspace(*line_src)) while (line_src < line_end && isspace(*line_src))
line_src++; line_src++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment