Skip to content

Commit

Permalink
apply: fix binary patch detection.
Browse files Browse the repository at this point in the history
The comparison to find "Binary files " string was looking at a
wrong place when offset != 0.

Also, we may have the full 40-byte textual sha1 on the index
line; two off-by-one errors prevented it.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Nov 15, 2005
1 parent 2ed0288 commit 9add69b
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions apply.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,7 @@ static int gitdiff_index(const char *line, struct patch *patch)
int len;

ptr = strchr(line, '.');
if (!ptr || ptr[1] != '.' || 40 <= ptr - line)
if (!ptr || ptr[1] != '.' || 40 < ptr - line)
return 0;
len = ptr - line;
memcpy(patch->old_sha1_prefix, line, len);
Expand All @@ -384,7 +384,7 @@ static int gitdiff_index(const char *line, struct patch *patch)
ptr = eol;
len = ptr - line;

if (40 <= len)
if (40 < len)
return 0;
memcpy(patch->new_sha1_prefix, line, len);
patch->new_sha1_prefix[len] = 0;
Expand Down Expand Up @@ -895,7 +895,8 @@ static int parse_chunk(char *buffer, unsigned long size, struct patch *patch)
static const char binhdr[] = "Binary files ";

if (sizeof(binhdr) - 1 < size - offset - hdrsize &&
!memcmp(binhdr, buffer + hdrsize, sizeof(binhdr)-1))
!memcmp(binhdr, buffer + hdrsize + offset,
sizeof(binhdr)-1))
patch->is_binary = 1;

if (patch->is_binary && !apply && !check)
Expand Down

0 comments on commit 9add69b

Please sign in to comment.