Code

fix overlapping memcpy in normalize_absolute_path
authorJeff King <peff@peff.net>
Thu, 23 Oct 2008 04:32:23 +0000 (04:32 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sun, 2 Nov 2008 06:46:53 +0000 (23:46 -0700)
The comments for normalize_absolute_path explicitly claim
that the source and destination buffers may be the same
(though they may not otherwise overlap). Thus the call to
memcpy may involve copying overlapping data, and memmove
should be used instead.

This fixes a valgrind error in t1504.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
path.c

diff --git a/path.c b/path.c
index 76e8872622e435b050f77198ef6eef6e6ff6869e..c1cb54b7b8b478c717861a0205e537ded3fbbfc9 100644 (file)
--- a/path.c
+++ b/path.c
@@ -348,7 +348,7 @@ int normalize_absolute_path(char *buf, const char *path)
                        goto next;
                }
 
-               memcpy(dst, comp_start, comp_len);
+               memmove(dst, comp_start, comp_len);
                dst += comp_len;
        next:
                comp_start = comp_end;