diff options
| author | Jeff King <peff@peff.net> | 2026-07-02 04:05:03 -0400 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-07-02 09:50:47 -0700 |
| commit | 77f78b802559f19167a1d004d5566da9fbff9e85 (patch) | |
| tree | 462a845daf96c13502f7d597ac751319281668a1 /gitweb/gitweb.css | |
| parent | 64b69225620a4119e1ee6e02620c56a58dc442fb (diff) | |
check_stream_oid(): discard hash on read error
The happy path of check_stream_oid() is to initialize a hash, feed the
loose object zlib stream into it, and then get the final result. But if
we hit a zlib error or see extra cruft we'll bail early with an error.
Since we never call git_hash_final() in this cases, any resources held
by the git_hash_ctx may be leaked. Our default hash algorithms don't
allocate anything in the hash_ctx, but some implementations do. For
example, running:
make SANITIZE=leak \
OPENSSL_SHA256=1 \
GIT_TEST_DEFAULT_HASH=sha256 \
test
will fail t1450, since it feeds corrupted objects that cause us to bail
from check_stream_oid(). This patch fixes it by discarding the hash in
those early return paths. Trying to jump to a common "out:" label is not
worth it here, as we must _not_ discard a hash that was already fed to
git_hash_final(). And the hash_ctx itself does not carry any information
(so we cannot check for a NULL pointer, etc).
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'gitweb/gitweb.css')
0 files changed, 0 insertions, 0 deletions
