From: Junio C Hamano <gitster@pobox.com>
To: YONETANI Tomokazu <qhwt+git@les.ath.cx>
Cc: git@vger.kernel.org
Subject: Re: [PATCH] git-fast-import possible memory corruption problem
Date: Sat, 13 Dec 2008 19:42:13 -0800 [thread overview]
Message-ID: <7vd4fv4e3u.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <20081214020822.GB4121@les.ath.cx> (YONETANI Tomokazu's message of "Sun, 14 Dec 2008 11:08:22 +0900")
YONETANI Tomokazu <qhwt+git@les.ath.cx> writes:
> While trying to convert NetBSD CVS repository to Git, I've been
> experiencing 100% reproducible crash of git-fast-import. After
> poking here and there and I noticed a dubious code fragment in
> pool_alloc():
> :
>
> r = p->next_free;
> /* round out to a 'uintmax_t' alignment */
> if (len & (sizeof(uintmax_t) - 1))
> len += sizeof(uintmax_t) - (len & (sizeof(uintmax_t) - 1));
> p->next_free += len;
> return r;
>
> As the `round out' takes place AFTER it found the room in the mem_pool,
> there's a small chance of p->next_free being set outside of the chosen
> area, up to (sizeof(uintmax_t) - 1) bytes. pool_strdup() is one of the
> functions which can trigger the problem, when pool_alloc() finds a room
> at the end of a pool entry and the requested length is not multiple of
> size(uintmax_t). I believe attached patch addresses this problem.
Thanks -- do you mean your reproducible crash does not reproduce with the
patch anymore?
I think your change to move the "round up" logic up in the codepath makes
perfect sense. But your patch seems to conflate totally unrelated change
to move memzero from the caller to callee into it, and I do not see the
reason why it should be that way. If the caller asked 10 bytes to calloc
from the pool, and the underlying pool allocator gives you a 16-byte
block, you only have to guarantee that the first 10 bytes are cleared, and
can leave the trailing padding 6 bytes at the end untouched.
next prev parent reply other threads:[~2008-12-14 3:43 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-14 2:08 [PATCH] git-fast-import possible memory corruption problem YONETANI Tomokazu
2008-12-14 3:42 ` Junio C Hamano [this message]
2008-12-14 5:53 ` Junio C Hamano
2008-12-14 10:45 ` YONETANI Tomokazu
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=7vd4fv4e3u.fsf@gitster.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=qhwt+git@les.ath.cx \
/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 NNTP newsgroup(s).