[RFC PATCH 5/5] fix overlapping memcpy in normalize_absolute_path
- From
Jeff King <peff@peff.net>
- Date
- Oct 22, 2008, 20:32 UTC
- Message-ID
- <20081022203222.GE4547@coredump.intra.peff.net>
- In-Reply-To
- <20081022202810.GA4439@coredump.intra.peff.net>
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> --- An alternative fix, since we declare that only true equality is OK, would be to keep the memcpy and explicitly check for "comp_start == dst". That might have a performance benefit if memcpy is faster than memmove, but I don't know that normalize_absolute_path is in any critical paths.
path.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/path.c b/path.c index 76e8872..c1cb54b 100644 --- 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;
-- 1.6.0.2.825.g6d19d