diff options
author | Junio C Hamano <junkio@cox.net> | 2005-11-02 15:19:13 -0800 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2005-11-02 16:50:58 -0800 |
commit | 9534f40bc42dd826cc26c8c8c84f6a8a5fc569f6 (patch) | |
tree | 85db17a196526144838f60d848c9582c4e113d59 /server-info.c | |
parent | 2fd955cc0b49de9e64b2f073ce76033975f0be24 (diff) | |
download | git-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.c | 7 |
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; } |