http-push: avoid invalid memory accesses
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Thu, 14 Feb 2008 23:25:33 +0000 (23:25 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sat, 16 Feb 2008 07:21:56 +0000 (23:21 -0800)
Before objects are sent, the respective ref is locked.  However,
without this patch, the lock is lifted before the last object for
that ref was sent.  As a consequence, the lock data was accessed
after the lock structure was free()d.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
http-push.c

index b2b410df902f2a4f2bca634d82cf103d288c9042..386b806f3ec62c183752e5ec5b19920fc9bd4cf0 100644 (file)
@@ -2398,7 +2398,12 @@ int main(int argc, char **argv)
                fill_active_slots();
                add_fill_function(NULL, fill_active_slot);
 #endif
-               finish_all_active_slots();
+               do {
+                       finish_all_active_slots();
+#ifdef USE_CURL_MULTI
+                       fill_active_slots();
+#endif
+               } while (request_queue_head && !aborted);
 
                /* Update the remote branch if all went well */
                if (aborted || !update_remote(ref->new_sha1, ref_lock)) {