From 5c6625bf62a81c114d849faa1a9cc95c126034a5 Mon Sep 17 00:00:00 2001 From: Andreas Gruenbacher Date: Mon, 9 Mar 2015 15:17:31 -0400 Subject: Don't require traditional patch header after "git --diff" Reported by Tim Waugh . * src/pch.c (intuit_diff_type): Don't require a traditional patch header ("--- old\n+++ new/n") after a "git --diff" header; the "git --diff" header gives us enough information for being able to process subsequent hunks. This deals with corrupted patches more gracefully. * tests/corrupt-patch: New test case. * tests/Makefile.am (TESTS): Add test case. --- src/pch.c | 1 + tests/Makefile.am | 1 + tests/corrupt-patch | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+) create mode 100644 tests/corrupt-patch diff --git a/src/pch.c b/src/pch.c index 9d74471..84adba1 100644 --- a/src/pch.c +++ b/src/pch.c @@ -622,6 +622,7 @@ intuit_diff_type (bool need_header, mode_t *p_file_type) p_name[i] = 0; } p_git_diff = true; + need_header = false; } else if (p_git_diff && strnEQ (s, "index ", 6)) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 91c9dce..a3ef97a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -23,6 +23,7 @@ TESTS = \ bad-usage \ concat-git-diff \ copy-rename \ + corrupt-patch \ corrupt-reject-files \ create-delete \ create-directory \ diff --git a/tests/corrupt-patch b/tests/corrupt-patch new file mode 100644 index 0000000..4f8e121 --- /dev/null +++ b/tests/corrupt-patch @@ -0,0 +1,33 @@ +# Copyright (C) 2015 Free Software Foundation, Inc. +# +# Copying and distribution of this file, with or without modification, +# in any medium, are permitted without royalty provided the copyright +# notice and this notice are preserved. + +. $srcdir/test-lib.sh + +require cat +use_local_patch +use_tmpdir + +# ============================================================== + +# Patch missing the traditional "--- old\n+++ new\n" header + +cat > test.diff < test + +check 'patch -p1 -i test.diff' <