git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Am I doing something wrong?

From
CLChuck 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.html

begin: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

Previous: Junio C HamanoNext: Junio C Hamano
Message 10 of 11 in “Am I doing something wrong?”
  1. Randal L. SchwartzDec 21, 2005
  2. Junio C HamanoDec 21, 2005
  3. Randal L. SchwartzDec 21, 2005
  4. Junio C HamanoDec 21, 2005
  5. Randal L. SchwartzDec 21, 2005
  6. Junio C HamanoDec 21, 2005
  7. Peter BaumannDec 21, 2005
  8. Peter BaumannDec 21, 2005
  9. Junio C HamanoDec 21, 2005
  10. Chuck LeverDec 21, 2005
  11. Junio C HamanoDec 21, 2005

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.