# [PATCH] Don't coredump on bad refs in update-server-info.

2 messages from 2007-01-31 to 2007-01-31. Participants: Shawn O. Pearce, Jakub Narebski.
Thread: https://gitlist.dev/t/6589

## Shawn O. Pearce, 2007-01-31 07:24

Subject: [PATCH] Don't coredump on bad refs in update-server-info.
Message-ID: <20070131072444.GA28804@spearce.org>
URL: https://gitlist.dev/e/20070131072444.GA28804%40spearce.org

```
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.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---

 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(-)

diff --git a/server-info.c b/server-info.c
index 6cd38be..f9be5a7 100644
--- a/server-info.c
+++ b/server-info.c
@@ -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) {
-- 
1.5.0.rc2.81.g73a2

```

## Jakub Narebski, 2007-01-31 08:20

Subject: Re: [PATCH] Don't coredump on bad refs in update-server-info.
Message-ID: <eppjeg$tgk$1@sea.gmane.org>
URL: https://gitlist.dev/e/eppjeg%24tgk%241%40sea.gmane.org
In-Reply-To: <20070131072444.GA28804@spearce.org>

```
Shawn O. Pearce wrote:

> 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.
-- 
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git

```
