From: Jeff King <peff@peff.net>
To: Johannes Schindelin <johannes.schindelin@gmx.de>
Cc: gitster@pobox.com, git@vger.kernel.org
Subject: Re: [PATCH 2/6] Accept object data in the fsck_object() function
Date: Fri, 29 Aug 2014 19:05:46 -0400 [thread overview]
Message-ID: <20140829230546.GC24834@peff.net> (raw)
In-Reply-To: <alpine.DEB.1.00.1408281646400.990@s15462909.onlinehome-server.info>
On Thu, Aug 28, 2014 at 04:46:42PM +0200, Johannes Schindelin wrote:
> When fsck'ing an incoming pack, we need to fsck objects that cannot be
> read via read_sha1_file() because they are not local yet (and might even
> be rejected if transfer.fsckobjects is set to 'true').
>
> For commits, there is a hack in place: we basically cache commit
> objects' buffers anyway, but the same is not true, say, for tag objects.
>
> By refactoring fsck_object() to take the object buffer and size as
> optional arguments -- optional, because we still fall back to the
> previous method to look at the cached commit objects if the caller
> passes NULL -- we prepare the machinery for the upcoming handling of tag
> objects.
>
> The assumption that such buffers are inherently NUL terminated is now
> wrong, of course, hence we pass the size of the buffer so that we can
> add a sanity check later, to prevent running past the end of the buffer.
After this, can we get rid of passing a "struct object" to the fsck code
entirely? It should be able to operate only on a type/buffer pair, along
with possibly a sha1 for error reporting.
The buffer management in index-pack's sha1_object function is
significantly complicated by attaching the temporary buffer to a "struct
commit", only to then have to detach it a few lines later. It is the
sole reason we had to add "detach_commit_buffer" a while ago.
-Peff
next prev parent reply other threads:[~2014-08-29 23:05 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 14:46 [PATCH 0/6] Improve tag checking in fsck and with transfer.fsckobjects Johannes Schindelin
2014-08-28 14:46 ` [PATCH 1/6] Refactor type_from_string() to avoid die()ing in case of errors Johannes Schindelin
2014-08-28 20:43 ` Junio C Hamano
2014-08-28 14:46 ` [PATCH 2/6] Accept object data in the fsck_object() function Johannes Schindelin
2014-08-28 20:47 ` Junio C Hamano
2014-08-29 23:10 ` Jeff King
2014-08-29 23:05 ` Jeff King [this message]
2014-08-28 14:46 ` [PATCH 3/6] Make sure fsck_commit_buffer() does not run out of the buffer Johannes Schindelin
2014-08-28 20:59 ` Junio C Hamano
2014-08-29 23:27 ` Jeff King
2014-08-28 14:46 ` [PATCH 4/6] fsck: check tag objects' headers Johannes Schindelin
2014-08-28 21:25 ` Junio C Hamano
2014-08-28 21:36 ` Junio C Hamano
2014-08-29 23:46 ` Jeff King
2014-08-31 22:46 ` Junio C Hamano
2014-09-03 22:29 ` Jeff King
2014-09-03 23:14 ` Junio C Hamano
2014-09-04 2:04 ` Jeff King
2014-08-29 23:43 ` Jeff King
2014-09-02 18:41 ` Junio C Hamano
2014-09-03 21:38 ` Jeff King
2014-08-28 14:46 ` [PATCH 5/6] Add regression tests for stricter tag fsck'ing Johannes Schindelin
2014-08-28 14:47 ` [PATCH 6/6] Make sure that index-pack --strict fails upon invalid tag objects Johannes Schindelin
2014-09-10 13:52 ` [PATCH v2 0/6] Improve tag checking in fsck and with transfer.fsckobjects Johannes Schindelin
2014-09-10 13:58 ` Johannes Schindelin
2014-09-10 21:07 ` Junio C Hamano
2014-09-10 21:31 ` Junio C Hamano
2014-09-11 14:20 ` Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 " Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 1/6] Refactor type_from_string() to avoid die()ing in case of errors Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 2/6] Accept object data in the fsck_object() function Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 3/6] Make sure fsck_commit_buffer() does not run out of the buffer Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 4/6] fsck: check tag objects' headers Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 5/6] Add regression tests for stricter tag fsck'ing Johannes Schindelin
2014-09-11 14:26 ` [PATCH v3 6/6] Make sure that index-pack --strict checks tag objects Johannes Schindelin
2014-09-11 17:58 ` Junio C Hamano
2014-09-11 21:16 ` Junio C Hamano
2014-09-11 21:17 ` [PATCH 0/3] hash-object --literally Junio C Hamano
2014-09-11 21:17 ` [PATCH 1/3] hash-object: reduce file-scope statics Junio C Hamano
2014-09-11 21:17 ` [PATCH 2/3] hash-object: pass 'write_object' as a flag Junio C Hamano
2014-09-11 21:17 ` [PATCH 3/3] hash-object: add --literally option Junio C Hamano
2014-09-12 8:04 ` [PATCH v3 6/6] Make sure that index-pack --strict checks tag objects Johannes Schindelin
2014-09-12 8:07 ` [PATCH v4 0/6] Improve tag checking in fsck and with transfer.fsckobjects Johannes Schindelin
2014-09-12 8:07 ` [PATCH v4 1/6] Refactor type_from_string() to avoid die()ing in case of errors Johannes Schindelin
2014-09-12 8:07 ` [PATCH v4 2/6] Accept object data in the fsck_object() function Johannes Schindelin
2014-09-12 8:07 ` [PATCH v4 3/6] Make sure fsck_commit_buffer() does not run out of the buffer Johannes Schindelin
2014-09-12 8:08 ` [PATCH v4 4/6] fsck: check tag objects' headers Johannes Schindelin
2014-09-12 8:08 ` [PATCH v4 5/6] Add regression tests for stricter tag fsck'ing Johannes Schindelin
2014-09-12 8:08 ` [PATCH v4 6/6] Make sure that index-pack --strict checks tag objects Johannes Schindelin
2014-09-12 18:02 ` [PATCH v4 0/6] Improve tag checking in fsck and with transfer.fsckobjects Junio C Hamano
2014-09-13 9:08 ` Johannes Schindelin
[not found] ` <cover.1410356761.git.johannes.schindelin@gmx.de>
2014-09-10 13:52 ` [PATCH v2 1/6] Refactor type_from_string() to avoid die()ing in case of errors Johannes Schindelin
2014-09-10 13:52 ` [PATCH v2 2/6] Accept object data in the fsck_object() function Johannes Schindelin
2014-09-10 13:52 ` [PATCH v2 3/6] Make sure fsck_commit_buffer() does not run out of the buffer Johannes Schindelin
2014-09-10 17:43 ` Junio C Hamano
2014-09-11 11:59 ` Johannes Schindelin
2014-09-11 16:49 ` Junio C Hamano
2014-09-10 20:45 ` Eric Sunshine
2014-09-10 13:53 ` [PATCH v2 4/6] fsck: check tag objects' headers Johannes Schindelin
2014-09-10 17:52 ` Junio C Hamano
2014-09-10 13:53 ` [PATCH v2 5/6] Add regression tests for stricter tag fsck'ing Johannes Schindelin
2014-09-10 17:56 ` Junio C Hamano
2014-09-11 14:15 ` Johannes Schindelin
2014-09-10 13:53 ` [PATCH v2 6/6] Make sure that index-pack --strict fails upon invalid tag objects Johannes Schindelin
2014-09-10 21:54 ` Junio C Hamano
2014-09-11 14:22 ` Johannes Schindelin
2014-09-11 16:50 ` Junio C Hamano
2014-09-11 17:04 ` Johannes Schindelin
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=20140829230546.GC24834@peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johannes.schindelin@gmx.de \
/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).