git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 5/5] apply: avoid possible bogus pointer

From
Jeff King <peff@peff.net>
Date
Jul 24, 2014, 04:43 UTC
Message-ID
<20140724044323.GE32355@peff.net>
In-Reply-To
<20140724043940.GA31282@peff.net>

When parsing "index" lines from a git-diff, we look for a space followed by the mode. If we don't have a space, then we set our pointer to the end-of-line. However, we don't double-check that our end-of-line pointer is valid (e.g., if we got a truncated diff input), which could lead to some wrap-around pointer arithmetic.

In most cases this would probably get caught by our "40 < len" check later in the function, but to be on the safe side, let's just use strchrnul to treat end-of-string the same as end-of-line.

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin/apply.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/builtin/apply.c b/builtin/apply.c
index 9f8f5ba..be2b4ce 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -1075,7 +1075,7 @@ static int gitdiff_index(const char *line, struct patch *patch)
 
 	line = ptr + 2;
 	ptr = strchr(line, ' ');
-	eol = strchr(line, '\n');
+	eol = strchrnul(line, '\n');
 
 	if (!ptr || eol < ptr)
 		ptr = eol;
-- 
2.0.0.566.gfe3e6b2
Previous: Jeff KingNext: Junio C Hamano
Message 6 of 8 in “coverity mixed bag”
  1. 0/5 coverity mixed bagJeff King, Jul 24, 2014
  2. 1/5 receive-pack: don't copy "dir" parameterJeff King, Jul 24, 2014
  3. 2/5 free ref string returned by dwim_refJeff King, Jul 24, 2014
  4. 3/5 transport: fix leaks in refs_from_alternate_cbJeff King, Jul 24, 2014
  5. 4/5 fix memory leak parsing core.commentcharJeff King, Jul 24, 2014
  6. 5/5 apply: avoid possible bogus pointerJeff King, Jul 24, 2014
  7. Junio C HamanoJul 24, 2014
  8. Stefan BellerJul 29, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.