# [PATCH] get_indexed_object can return NULL if nothing is in that slot; check for it

4 messages from 2011-08-24 to 2011-08-24. Participants: Brian Harring, Junio C Hamano.
Thread: https://gitlist.dev/t/28203

## Brian Harring, 2011-08-24 05:47

Subject: [PATCH] get_indexed_object can return NULL if nothing is in that slot; check for it
Message-ID: <20110824054717.GA16512@localhost>
URL: https://gitlist.dev/e/20110824054717.GA16512%40localhost

```
This fixes a segfault introduced by 051e400; via it, no longer able to 
trigger the http/smartserv race.

Signed-off-by: Brian Harring <ferringb@gmail.com>
---
 upload-pack.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/upload-pack.c b/upload-pack.c
index 6420918..8739bfa 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -533,6 +533,8 @@ static void check_non_tip(void)
 	namebuf[41] = '\n';
 	for (i = get_max_object_index(); 0 < i; ) {
 		o = get_indexed_object(--i);
+		if (!o)
+			continue;
 		if (!(o->flags & OUR_REF))
 			continue;
 		memcpy(namebuf + 1, sha1_to_hex(o->sha1), 40);
-- 
1.7.6

```

## Junio C Hamano, 2011-08-24 17:54

Subject: Re: [PATCH] get_indexed_object can return NULL if nothing is in that slot; check for it
Message-ID: <7vmxeypudw.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vmxeypudw.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20110824054717.GA16512@localhost>

```
Thanks for a fix.

It is both interesting and disturbing to see that these small mistakes are
discovered a week after the topics hit 'master', even though it has been
cooking in 'next' for a week before that happened (in the case of this
topic, it also hit 'maint' yesterday).

```

## Brian Harring, 2011-08-24 20:40

Subject: Re: [PATCH] get_indexed_object can return NULL if nothing is in that slot; check for it
Message-ID: <20110824204021.GA28157@beast>
URL: https://gitlist.dev/e/20110824204021.GA28157%40beast
In-Reply-To: <7vmxeypudw.fsf@alter.siamese.dyndns.org>

```
On Wed, Aug 24, 2011 at 10:54:51AM -0700, Junio C Hamano wrote:
> Thanks for a fix.
> 
> It is both interesting and disturbing to see that these small mistakes are
> discovered a week after the topics hit 'master', even though it has been
> cooking in 'next' for a week before that happened (in the case of this
> topic, it also hit 'maint' yesterday).

I'll admit I'm slightly surprised it slipped past for initial 
development- that said, you have to explicitly trigger the race to 
trigger the segfault.  And that's not easy w/out building out a 
custom setup- even w/ that setup, you need to go digging in server 
logs to realize the previous serverside failure just converted to a 
segfault.  Clientside, it hung just the same.

Bit nonobvious.  Plus, shit happens. ;)

Either way, I was poking at the source trying to figure out how to get 
some unittests for an end to end testing of the http/smartserv; that 
said I was having a helluva time finding a way to do it without 
bundling a stub of a webserver.  Suggestions would be welcome on that 
one.

~brian

```

## Junio C Hamano, 2011-08-24 21:10

Subject: Re: [PATCH] get_indexed_object can return NULL if nothing is in that slot; check for it
Message-ID: <7vpqjuo6rw.fsf@alter.siamese.dyndns.org>
URL: https://gitlist.dev/e/7vpqjuo6rw.fsf%40alter.siamese.dyndns.org
In-Reply-To: <20110824204021.GA28157@beast>

```
Brian Harring <ferringb@gmail.com> writes:

> On Wed, Aug 24, 2011 at 10:54:51AM -0700, Junio C Hamano wrote:
>> Thanks for a fix.
>> 
>> It is both interesting and disturbing to see that these small mistakes are
>> discovered a week after the topics hit 'master', even though it has been
>> cooking in 'next' for a week before that happened (in the case of this
>> topic, it also hit 'maint' yesterday).
>
> I'll admit I'm slightly surprised it slipped past for initial 
> development- that said, you have to explicitly trigger the race to 
> trigger the segfault.  And that's not easy w/out building out a 
> custom setup- even w/ that setup, you need to go digging in server 
> logs to realize the previous serverside failure just converted to a 
> segfault.  Clientside, it hung just the same.
>
> Bit nonobvious.  Plus, shit happens. ;)
>
> Either way, I was poking at the source trying to figure out how to get 
> some unittests for an end to end testing of the http/smartserv; that 
> said I was having a helluva time finding a way to do it without 
> bundling a stub of a webserver.  Suggestions would be welcome on that 
> one.

I probably should have made it clear that I was not complaining, and if it
sounded as if I was complaining at _you_, my deepest apologies.

In any case, thanks, and congratulations for your first commit in git.git
;-)

```
