Git Mailing List Archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Subject: [PATCH 01/12] diffstat_consume(): assert non-zero length
Date: Mon, 17 Oct 2022 21:01:17 -0400	[thread overview]
Message-ID: <Y0363eQnvcNkCG/O@coredump.intra.peff.net> (raw)
In-Reply-To: <Y036whEorZV0rOgB@coredump.intra.peff.net>

The callback interface for xdiff_emit_line_fn gives us a line/len pair,
but diffstat_consume() never looks at "len". At first glance this seems
like a bug that could cause us to read further than xdiff intends. But
in practice, we read only the first character, and xdiff would never
pass us an empty line.

Let's add a run-time assertion that this is true, which clarifies our
assumption and silences -Wunused-parameter.

Signed-off-by: Jeff King <peff@peff.net>
---
 diff.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/diff.c b/diff.c
index 648f6717a5..bba888a34a 100644
--- a/diff.c
+++ b/diff.c
@@ -2488,6 +2488,9 @@ static int diffstat_consume(void *priv, char *line, unsigned long len)
 	struct diffstat_t *diffstat = priv;
 	struct diffstat_file *x = diffstat->files[diffstat->nr - 1];
 
+	if (!len)
+		BUG("xdiff fed us an empty line");
+
 	if (line[0] == '+')
 		x->added++;
 	else if (line[0] == '-')
-- 
2.38.0.371.g300879f34e


  reply	other threads:[~2022-10-18  1:01 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-10-18  1:00 [PATCH 0/12] more unused-parameter fixes / annotations Jeff King
2022-10-18  1:01 ` Jeff King [this message]
2022-10-18  1:02 ` [PATCH 02/12] submodule--helper: drop unused argc from module_list_compute() Jeff King
2022-10-18  1:04 ` [PATCH 03/12] update-index: drop unused argc from do_reupdate() Jeff King
2022-10-18  1:05 ` [PATCH 04/12] mark unused parameters in trivial compat functions Jeff King
2022-10-18  1:05 ` [PATCH 05/12] object-file: mark unused parameters in hash_unknown functions Jeff King
2022-10-18  1:05 ` [PATCH 06/12] string-list: mark unused callback parameters Jeff King
2022-10-18  1:05 ` [PATCH 07/12] date: mark unused parameters in handler functions Jeff King
2022-10-18  1:08 ` [PATCH 08/12] apply: mark unused parameters in handlers Jeff King
2022-10-18  1:08 ` [PATCH 09/12] apply: mark unused parameters in noop error/warning routine Jeff King
2022-10-18  1:08 ` [PATCH 10/12] convert: mark unused parameter in null stream filter Jeff King
2022-10-18  1:09 ` [PATCH 11/12] diffcore-pickaxe: mark unused parameters in pickaxe functions Jeff King
2022-10-18  1:10 ` [PATCH 12/12] ll-merge: mark unused parameters in callbacks Jeff King

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=Y0363eQnvcNkCG/O@coredump.intra.peff.net \
    --to=peff@peff.net \
    --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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).