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: > 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 - 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
This archive was generated by hypermail 2.1.8 : 2005-12-22 08:04:39 EST