Skip to content

Commit

Permalink
apply: avoid possible bogus pointer
Browse files Browse the repository at this point in the history
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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Jeff King authored and Junio C Hamano committed Jul 24, 2014
1 parent 649409b commit 31bb6d3
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion builtin/apply.c
Original file line number Diff line number Diff line change
Expand Up @@ -1073,7 +1073,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;
Expand Down

0 comments on commit 31bb6d3

Please sign in to comment.