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 <junkio@cox.net> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
54c26fb9d0
commit
92d4c85d24
13
fsck-cache.c
13
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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user