Re: [PATCH] mv: prevent mismatched data when ignoring errors.
From: Thomas Rast <hidden>
Date: 2016-06-15 23:00:20
"brian m. carlson" [off-list ref] writes:
quoted hunk
We shrink the source and destination arrays, but not the modes or submodule_gitfile arrays, resulting in potentially mismatched data. Shrink all the arrays at the same time to prevent this. Signed-off-by: brian m. carlson <redacted> --- builtin/mv.c | 5 +++++ 1 file changed, 5 insertions(+)diff --git a/builtin/mv.c b/builtin/mv.c index f99c91e..b20cd95 100644 --- a/builtin/mv.c +++ b/builtin/mv.c@@ -230,6 +230,11 @@ int cmd_mv(int argc, const char **argv, const char *prefix) memmove(destination + i, destination + i + 1, (argc - i) * sizeof(char *)); + memmove(modes + i, modes + i + 1, + (argc - i) * sizeof(char *));
This isn't right -- you are computing the size of things to be moved based on a type of char*, but 'modes' is an enum. (Valgrind spotted this.) -- Thomas Rast tr@thomasrast.ch