From 1c23d794bfa3b9f3e03b18bb7e542615a924dbe3 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 9 Jan 2007 20:04:52 -0500 Subject: Don't die in git-http-fetch when fetching packs. My sp/mmap changes to pack-check.c modified the function such that it expects packed_git.pack_size to be populated with the total bytecount of the packfile by the caller. But that isn't the case for packs obtained by git-http-fetch as pack_size was not initialized before being accessed. This caused verify_pack to think it had 2^32-21 bytes available when the downloaded pack perhaps was only 305 bytes in length. The use_pack function then later dies with "offset beyond end of packfile" when computing the overall file checksum. Signed-off-by: Shawn O. Pearce Signed-off-by: Junio C Hamano --- http-push.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'http-push.c') diff --git a/http-push.c b/http-push.c index 7e73eac9c3..0a15f53782 100644 --- a/http-push.c +++ b/http-push.c @@ -770,11 +770,14 @@ static void finish_request(struct transfer_request *request) request->url, curl_errorstr); remote->can_update_info_refs = 0; } else { + off_t pack_size = ftell(request->local_stream); + fclose(request->local_stream); request->local_stream = NULL; if (!move_temp_to_file(request->tmpfile, request->filename)) { target = (struct packed_git *)request->userData; + target->pack_size = pack_size; lst = &remote->packs; while (*lst != target) lst = &((*lst)->next); -- cgit v1.2.3