Commit 9b7a6a99807862778706c455d6ba361a3b1f8f7b

Carlos Martín Nieto 2011-04-04T16:17:39

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>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
diff --git a/src/config.c b/src/config.c
index 0052c65..93f15fb 100644
--- a/src/config.c
+++ b/src/config.c
@@ -537,12 +537,13 @@ static char *cfg_readline(git_config *cfg)
 	line_src = cfg->reader.read_ptr;
     line_end = strchr(line_src, '\n');
 
-	while (is_linebreak(line_end))
-		line_end = strchr(line_end + 1, '\n');
-
     /* no newline at EOF */
 	if (line_end == NULL)
 		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))
 		line_src++;