path: root/server-info.c
diff options
authorJunio C Hamano <>2005-11-02 23:19:13 (GMT)
committerJunio C Hamano <>2005-11-03 00:50:58 (GMT)
commit9534f40bc42dd826cc26c8c8c84f6a8a5fc569f6 (patch)
tree85db17a196526144838f60d848c9582c4e113d59 /server-info.c
parent2fd955cc0b49de9e64b2f073ce76033975f0be24 (diff)
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 <>
Diffstat (limited to 'server-info.c')
1 files changed, 4 insertions, 3 deletions
diff --git a/server-info.c b/server-info.c
index ba53591..0cba8e1 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;