Skip to contentSkip to conversation

Don't coredump on bad refs in update-server-info.

PATCH In review Shawn O. Pearce 2 participants 2 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Don't coredump on bad refs in update-server-info.

Apparently if we are unable to parse an object update-server-info coredumps, as it doesn't bother to check the return value of its call to parse_object.

Instead of coredumping, skip the ref.

---

I don't know how often folks might run into this. I intentionally broke pack reading in one of my topics and discovered that update-server-info crashed with a segfault when the pack access code was unable to decompress the object behind the ref. That's less than optimal.

 server-info.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
server-info.c +2 -0
index 6cd38be..f9be5a7 100644
@@ -10,6 +10,8 @@ static FILE *info_ref_fp;
 static int add_info_ref(const char *path, const unsigned char *sha1, int flag, void *cb_data)
 {
 	struct object *o = parse_object(sha1);
+	if (!o)
+		return -1;
 
 	fprintf(info_ref_fp, "%s	%s\n", sha1_to_hex(sha1), path);
 	if (o->type == OBJ_TAG) {
Signature · 1 line
1.5.0.rc2.81.g73a2
#1 lore raw
Quoted 2 lines · Shawn O. Pearce

Apparently if we are unable to parse an object update-server-info coredumps, as it doesn't bother to check the return value of its

"Apparently if we are unable to parse an object _then_ update-server-info
coredumps" is a bit more easier to understand.

Signature · 3 lines
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git