From: Linus Torvalds Date: Tue, 3 May 2005 14:57:56 +0000 (-0700) Subject: fsck-cache: fix SIGSEGV on bad tag object X-Git-Tag: v0.99~654 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=92d4c85d248728b1937d01fdd088173753c6994d;p=git.git fsck-cache: fix SIGSEGV on bad tag object fsck_tag() failes to notice that the parsing of the tag may have failed in the parse_object() call on the object that it is tagging. Noticed by Junio. Signed-off-by: Junio C Hamano Signed-off-by: Linus Torvalds --- diff --git a/fsck-cache.c b/fsck-cache.c index 637aededb..fb0d82f33 100644 --- a/fsck-cache.c +++ b/fsck-cache.c @@ -133,14 +133,17 @@ static int fsck_commit(struct commit *commit) static int fsck_tag(struct tag *tag) { + struct object *tagged = tag->tagged; + + if (!tagged) { + printf("bad object in tag %s\n", sha1_to_hex(tag->object.sha1)); + return -1; + } if (!show_tags) return 0; - printf("tagged %s %s", - tag->tagged->type, - sha1_to_hex(tag->tagged->sha1)); - printf(" (%s) in %s\n", - tag->tag, sha1_to_hex(tag->object.sha1)); + printf("tagged %s %s", tagged->type, sha1_to_hex(tagged->sha1)); + printf(" (%s) in %s\n", tag->tag, sha1_to_hex(tag->object.sha1)); return 0; }