Re: [PATCH 3/6] git-fsck: Do thorough verification of tag objects.
- From
Johan Herland <johan@herland.net>
- Date
- Jun 4, 2007, 07:51 UTC
- Message-ID
- <200706040951.06620.johan@herland.net>
- In-Reply-To
- <20070604055655.GB15148@moooo.ath.cx>
Teach git-fsck to do the same kind of verification on tag objects that is already done by git-mktag.
Signed-off-by: Johan Herland <johan@herland.net> ---
Matthias Lederhofer <matled@gmx.net> wrote:
> The objerror() function prints the sha1 and object type, I think this > one should be used instead of error() here.
Of course, you're right. Like this, I hope:
builtin-fsck.c | 14 ++++++++++++++ 1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/builtin-fsck.c b/builtin-fsck.c index cbbcaf0..71a5fd5 100644 --- a/builtin-fsck.c +++ b/builtin-fsck.c @@ -344,6 +344,20 @@ static int fsck_commit(struct commit *commit) static int fsck_tag(struct tag *tag) { struct object *tagged = tag->tagged; + enum object_type type; + unsigned long size; + char *data = (char *) read_sha1_file(tag->object.sha1, &type, &size); + if (!data) + return objerror(&tag->object, "could not read tag"); + if (type != OBJ_TAG) { + free(data); + return objerror(&tag->object, "not a tag (internal error)"); + } + if (parse_and_verify_tag_buffer(0, data, size, 1)) { /* thoroughly verify tag object */ + free(data); + return objerror(&tag->object, "failed thorough tag object verification"); + } + free(data); if (!tagged) { return objerror(&tag->object, "could not load tagged object");
-- 1.5.2