Re: Am I doing something wrong?
- From
- Chuck Lever <cel@citi.umich.edu>
- Date
- Dec 21, 2005, 21:03 UTC
- Message-ID
- <43A9C33E.2070807@citi.umich.edu>
- In-Reply-To
- <7vvexi8bo9.fsf@assigned-by-dhcp.cox.net>
maybe the Linux kernel repository needs the same treatment. i'm getting the "all zeros" commit error message when trying to pull from it.
Junio C Hamano wrote:
Show 71 quoted lines
> It turns out to be a stupid off-by-one error in http-fetch.c.
> The objects/info/packs file has the following:
>
> $ cat objects/info/packs
> P pack-46ff81b11ed16ed38caa4aada913cb08c00185b2.pack
> P pack-05f611b3b8198b262acdf678584d365f8e879aec.pack
> P pack-740c99c0be6734adbd130737dec2608dc4682761.pack
> $
>
> The code that parses this in http-fetch had an off-by-one, and
> incorrectly thought that the last entry was incomplete. This
> problem did not surface earlier, because objects/info/packs file
> used to have other information after all the P lines, but
> http-fetch was not interested in was skipping them. The latest
> update-server-info stopped producing those extra lines.
>
> As a band-aid, I just ran this command at the server that public
> ones mirror from:
>
> $ echo >>objects/info/packs
>
> The change seems to have mirrored out already, and my "broken"
> client before the attached patch successfully fetches from
> there, so hopefully things would work OK for you as well.
>
> I also have to add some code to server-info.c, to append an
> empty after objects/info/packs file to work around this bug in
> the deployed http clients.
>
> Thanks for your help in diagnosing and fixing this problem.
>
> -- >8 --
> [PATCH] http-fetch.c: fix objects/info/pack parsing.
>
> It failed to register the last pack mentioned in the
> objects/info/packs file. Also it had an independent overrun
> error.
>
> Signed-off-by: Junio C Hamano <junkio@cox.net>
>
> ---
> git diff
> diff --git a/http-fetch.c b/http-fetch.c
> index ad59f1c..3cd6ef9 100644
> --- a/http-fetch.c
> +++ b/http-fetch.c
> @@ -658,7 +658,7 @@ static int fetch_indices(struct alt_base
> switch (data[i]) {
> case 'P':
> i++;
> - if (i + 52 < buffer.posn &&
> + if (i + 52 <= buffer.posn &&
> !strncmp(data + i, " pack-", 6) &&
> !strncmp(data + i + 46, ".pack\n", 6)) {
> get_sha1_hex(data + i + 6, sha1);
> @@ -667,7 +667,7 @@ static int fetch_indices(struct alt_base
> break;
> }
> default:
> - while (data[i] != '\n')
> + while (i < buffer.posn && data[i] != '\n')
> i++;
> }
> i++;
>
> Compilation finished at Wed Dec 21 11:40:06
>
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.htmlbegin:vcard fn:Chuck Lever n:Lever;Charles org:Network Appliance, Incorporated;Open Source NFS Client Development adr:535 West William Street, Suite 3100;;Center for Information Technology Integration;Ann Arbor;MI;48103-4943;USA email;internet:cel@citi.umich.edu title:Member of Technical Staff tel;work:+1 734 763 4415 tel;fax:+1 734 763 4434 tel;home:+1 734 668 1089 x-mozilla-html:FALSE url:http://troy.citi.umich.edu/u/cel/ version:2.1 end:vcard