Don't use memcpy when source and dest. buffers may overlap

git-index-pack can call memcpy with overlapping source and destination
buffers.  The patch below makes it use memmove instead.

If you want to demonstrate a failure, add the following two lines

+               if (input_offset < input_len)
+                 abort ();

before the existing memcpy call (shown in the patch below),
and then run this:

  (cd t; sh ./t5500-fetch-pack.sh)

Signed-off-by: Jim Meyering <jim@meyering.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Jim Meyering 2006-12-11 19:06:34 +01:00 committed by Junio C Hamano
parent d44c92d6ab
commit 554a2636f7

View File

@ -96,7 +96,7 @@ static void flush(void)
if (output_fd >= 0) if (output_fd >= 0)
write_or_die(output_fd, input_buffer, input_offset); write_or_die(output_fd, input_buffer, input_offset);
SHA1_Update(&input_ctx, input_buffer, input_offset); SHA1_Update(&input_ctx, input_buffer, input_offset);
memcpy(input_buffer, input_buffer + input_offset, input_len); memmove(input_buffer, input_buffer + input_offset, input_len);
input_offset = 0; input_offset = 0;
} }
} }