From: Junio C Hamano <gitster@pobox.com>
To: Simon Richter <Simon.Richter@hogyros.de>
Cc: Patrick Steinhardt <ps@pks.im>,
git@vger.kernel.org, Ben Knoble <ben.knoble@gmail.com>,
Jeff King <peff@peff.net>,
"brian m. carlson" <sandals@crustytoothpaste.net>,
"Randall S. Becker" <randall.becker@nexbridge.ca>,
Phillip Wood <phillip.wood@dunelm.org.uk>,
Johannes Schindelin <Johannes.Schindelin@gmx.de>
Subject: Re: [PATCH 1/5] compat/posix: introduce writev(3p) wrapper
Date: Thu, 16 Jul 2026 13:09:32 -0700 [thread overview]
Message-ID: <xmqqfr1ig0hv.fsf@gitster.g> (raw)
In-Reply-To: <a2676ec6-39d5-4220-8549-10a17daec668@hogyros.de> (Simon Richter's message of "Thu, 16 Jul 2026 17:47:25 +0900")
Simon Richter <Simon.Richter@hogyros.de> writes:
> Hi,
>
>> + if (iov[i].iov_len > maximum_signed_value_of_type(ssize_t) ||
>> + iov[i].iov_len + sum > maximum_signed_value_of_type(ssize_t)) {
>
> That feels like it could overflow.
Isn't it checking if it would overflow (and dying if so)?
Ah, wait. The addition "(iov[i].iov_len + sum)" can indeed wrap
around, and comparing it with the maximum value of ssize_t wouldn't
catch that. Is that what you mean?
Would something like this:
if (maximum_signed_value_of_type(ssize_t) < iov[i].iov_len ||
iov[i].iov_len + sum < iov[i].iov_len ||
maximum_signed_value_of_type(ssize_t) < iov[i].iov_len + sum)
work better to catch the three cases independently?
(1) The value is already too large on its own.
(2) Adding them together would cause an unsigned wrap-around.
(3) The sum does not wrap around, but it exceeds the maximum
representable value of ssize_t anyway.
next prev parent reply other threads:[~2026-07-16 20:09 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-16 7:52 [PATCH 0/5] Reintroduce writev(3p) Patrick Steinhardt
2026-07-16 7:52 ` [PATCH 1/5] compat/posix: introduce writev(3p) wrapper Patrick Steinhardt
2026-07-16 8:47 ` Simon Richter
2026-07-16 20:09 ` Junio C Hamano [this message]
2026-07-16 20:44 ` Junio C Hamano
2026-07-16 7:52 ` [PATCH 2/5] wrapper: introduce writev(3p) wrappers Patrick Steinhardt
2026-07-16 7:52 ` [PATCH 3/5] wrapper: properly handle MAX_IO_SIZE in writev(3p) Patrick Steinhardt
2026-07-16 7:52 ` [PATCH 4/5] sideband: use writev(3p) to send pktlines Patrick Steinhardt
2026-07-16 7:52 ` [PATCH 5/5] fast-import: use writev(3p) to send cat-blob responses Patrick Steinhardt
2026-07-16 18:56 ` [PATCH 0/5] Reintroduce writev(3p) Johannes Sixt
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=xmqqfr1ig0hv.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=Johannes.Schindelin@gmx.de \
--cc=Simon.Richter@hogyros.de \
--cc=ben.knoble@gmail.com \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=phillip.wood@dunelm.org.uk \
--cc=ps@pks.im \
--cc=randall.becker@nexbridge.ca \
--cc=sandals@crustytoothpaste.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.