public inbox for git@vger.kernel.org
 help / color / mirror / Atom feed
From: Jialong Wang <jerrywang183@yahoo.com>
To: git@vger.kernel.org
Cc: Jialong Wang <jerrywang183@yahoo.com>
Subject: [GSoC PATCH] apply: report the location of corrupt patches
Date: Sun, 15 Mar 2026 19:15:38 -0400	[thread overview]
Message-ID: <20260315231538.68586-1-jerrywang183@yahoo.com> (raw)
In-Reply-To: 20260315231538.68586-1-jerrywang183.ref@yahoo.com

When parsing a corrupt patch, git apply reports only the line number.
That does not tell the user which input the line number refers to.

Include the patch input path in the error message so the reported
location is easier to use.

Add tests for both file input and standard input.

Signed-off-by: Jialong Wang <jerrywang183@yahoo.com>
---
 apply.c               |  3 ++-
 t/t4100-apply-stat.sh | 16 +++++++++++++++-
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/apply.c b/apply.c
index b6dd1066a0..904d1c3e55 100644
--- a/apply.c
+++ b/apply.c
@@ -1875,7 +1875,8 @@ static int parse_single_patch(struct apply_state *state,
 		len = parse_fragment(state, line, size, patch, fragment);
 		if (len <= 0) {
 			free(fragment);
-			return error(_("corrupt patch at line %d"), state->linenr);
+			return error(_("corrupt patch at %s:%d"),
+				     state->patch_input_file, state->linenr);
 		}
 		fragment->patch = line;
 		fragment->size = len;
diff --git a/t/t4100-apply-stat.sh b/t/t4100-apply-stat.sh
index a5664f3eb3..f99e439688 100755
--- a/t/t4100-apply-stat.sh
+++ b/t/t4100-apply-stat.sh
@@ -48,7 +48,21 @@ test_expect_success 'applying a hunk header which overflows fails' '
 	+b
 	EOF
 	test_must_fail git apply patch 2>err &&
-	echo "error: corrupt patch at line 4" >expect &&
+	echo "error: corrupt patch at patch:4" >expect &&
+	test_cmp expect err
+'
+
+test_expect_success 'applying a hunk header which overflows from stdin fails' '
+	cat >patch <<-\EOF &&
+	diff -u a/file b/file
+	--- a/file
+	+++ b/file
+	@@ -98765432109876543210 +98765432109876543210 @@
+	-a
+	+b
+	EOF
+	test_must_fail git apply <patch 2>err &&
+	echo "error: corrupt patch at <stdin>:4" >expect &&
 	test_cmp expect err
 '
 test_done
-- 
2.51.0


       reply	other threads:[~2026-03-16  0:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20260315231538.68586-1-jerrywang183.ref@yahoo.com>
2026-03-15 23:15 ` Jialong Wang [this message]
2026-03-16 11:14   ` [GSoC PATCH] apply: report the location of corrupt patches Karthik Nayak
2026-03-16 11:34   ` Jialong Wang
2026-03-16 11:34   ` [GSoC PATCH v2] " Jialong Wang
2026-03-16 18:19     ` Junio C Hamano
2026-03-16 16:21   ` [GSoC PATCH v3] " Jialong Wang
2026-03-17 16:23     ` [PATCH v4 0/3] apply: report input file for more parse errors Jialong Wang
2026-03-17 16:23       ` [PATCH v4 1/3] apply: report the location of corrupt patches Jialong Wang
2026-03-17 16:23       ` [PATCH v4 2/3] apply: report input location in header parsing errors Jialong Wang
2026-03-17 16:23       ` [PATCH v4 3/3] apply: report input location in binary and garbage patch errors Jialong Wang
     [not found]   ` <xmqq8qq6y4ql.fsf@gitster.g>
2026-03-16 18:31     ` [GSoC PATCH v2] apply: report the location of corrupt patches Jialong Wang
2026-03-16 20:12       ` Junio C Hamano
2026-03-16 19:58     ` [GSoC PATCH] apply: report input location in header parsing errors Jialong Wang
2026-03-16 19:58     ` Jialong Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260315231538.68586-1-jerrywang183@yahoo.com \
    --to=jerrywang183@yahoo.com \
    --cc=git@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox