зеркало из https://github.com/microsoft/git.git
builtin-apply.c: fix the --- and +++ header filename consistency check
gitdiff_verify_name() only did a filename prefix check because of an off-by-one error. Signed-off-by: Andreas Gruenbacher <agruen@suse.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
b9cb07726a
Коммит
da915939fd
|
@ -686,7 +686,7 @@ static char *gitdiff_verify_name(const char *line, int isnull, char *orig_name,
|
||||||
if (isnull)
|
if (isnull)
|
||||||
die("git apply: bad git-diff - expected /dev/null, got %s on line %d", name, linenr);
|
die("git apply: bad git-diff - expected /dev/null, got %s on line %d", name, linenr);
|
||||||
another = find_name(line, NULL, p_value, TERM_TAB);
|
another = find_name(line, NULL, p_value, TERM_TAB);
|
||||||
if (!another || memcmp(another, name, len))
|
if (!another || memcmp(another, name, len + 1))
|
||||||
die("git apply: bad git-diff - inconsistent %s filename on line %d", oldnew, linenr);
|
die("git apply: bad git-diff - inconsistent %s filename on line %d", oldnew, linenr);
|
||||||
free(another);
|
free(another);
|
||||||
return orig_name;
|
return orig_name;
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (c) 2010 Andreas Gruenbacher
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='git apply filename consistency check'
|
||||||
|
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_expect_success setup '
|
||||||
|
cat > bad1.patch <<EOF
|
||||||
|
diff --git a/f b/f
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..d00491f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/f-blah
|
||||||
|
@@ -0,0 +1 @@
|
||||||
|
+1
|
||||||
|
EOF
|
||||||
|
cat > bad2.patch <<EOF
|
||||||
|
diff --git a/f b/f
|
||||||
|
deleted file mode 100644
|
||||||
|
index d00491f..0000000
|
||||||
|
--- b/f-blah
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1 +0,0 @@
|
||||||
|
-1
|
||||||
|
EOF
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'apply diff with inconsistent filenames in headers' '
|
||||||
|
test_must_fail git apply bad1.patch 2>err
|
||||||
|
grep "inconsistent new filename" err
|
||||||
|
test_must_fail git apply bad2.patch 2>err
|
||||||
|
grep "inconsistent old filename" err
|
||||||
|
'
|
||||||
|
|
||||||
|
test_done
|
Загрузка…
Ссылка в новой задаче