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)
|
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)
|
if (!show_tags)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
printf("tagged %s %s",
|
printf("tagged %s %s", tagged->type, sha1_to_hex(tagged->sha1));
|
||||||
tag->tagged->type,
|
printf(" (%s) in %s\n", tag->tag, sha1_to_hex(tag->object.sha1));
|
||||||
sha1_to_hex(tag->tagged->sha1));
|
|
||||||
printf(" (%s) in %s\n",
|
|
||||||
tag->tag, sha1_to_hex(tag->object.sha1));
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user