summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: b9cb077)
raw | patch | inline | side by side (parent: b9cb077)
author | Andreas Gruenbacher <agruen@suse.de> | |
Mon, 18 Jan 2010 21:37:38 +0000 (22:37 +0100) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 19 Jan 2010 01:08:59 +0000 (17:08 -0800) |
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>
off-by-one error.
Signed-off-by: Andreas Gruenbacher <agruen@suse.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-apply.c | patch | blob | history | |
t/t4133-apply-filenames.sh | [new file with mode: 0755] | patch | blob |
diff --git a/builtin-apply.c b/builtin-apply.c
index 36e2f9dda5c85c346e31f45afa6d28b107679970..8ca86f66c8e9bf55f99d5bb7e4d56913e1f74023 100644 (file)
--- a/builtin-apply.c
+++ b/builtin-apply.c
if (isnull)
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);
- 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);
free(another);
return orig_name;
diff --git a/t/t4133-apply-filenames.sh b/t/t4133-apply-filenames.sh
--- /dev/null
@@ -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