summaryrefslogtreecommitdiff
path: root/server-info.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-11-02 15:19:13 -0800
committerJunio C Hamano <junkio@cox.net>2005-11-02 16:50:58 -0800
commit9534f40bc42dd826cc26c8c8c84f6a8a5fc569f6 (patch)
tree85db17a196526144838f60d848c9582c4e113d59 /server-info.c
parent2fd955cc0b49de9e64b2f073ce76033975f0be24 (diff)
downloadgit-9534f40bc42dd826cc26c8c8c84f6a8a5fc569f6.tar.gz
Be careful when dereferencing tags.
One caller of deref_tag() was not careful enough to make sure what deref_tag() returned was not NULL (i.e. we found a tag object that points at an object we do not have). Fix it, and warn about refs that point at such an incomplete tag where needed. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'server-info.c')
-rw-r--r--server-info.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/server-info.c b/server-info.c
index ba5359108d..0cba8e19f7 100644
--- a/server-info.c
+++ b/server-info.c
@@ -13,9 +13,10 @@ static int add_info_ref(const char *path, const unsigned char *sha1)
fprintf(info_ref_fp, "%s %s\n", sha1_to_hex(sha1), path);
if (o->type == tag_type) {
- o = deref_tag(o);
- fprintf(info_ref_fp, "%s %s^{}\n",
- sha1_to_hex(o->sha1), path);
+ o = deref_tag(o, path, 0);
+ if (o)
+ fprintf(info_ref_fp, "%s %s^{}\n",
+ sha1_to_hex(o->sha1), path);
}
return 0;
}