Merge branch 'jk/http-walker-buffer-underflow-fix'
[git/git.git] / http-walker.c
index 507c200..ee049cb 100644 (file)
@@ -168,6 +168,11 @@ static int is_alternate_allowed(const char *url)
        };
        int i;
 
+       if (http_follow_config != HTTP_FOLLOW_ALWAYS) {
+               warning("alternate disabled by http.followRedirects: %s", url);
+               return 0;
+       }
+
        for (i = 0; i < ARRAY_SIZE(protocols); i++) {
                const char *end;
                if (skip_prefix(url, protocols[i], &end) &&
@@ -317,6 +322,8 @@ static void process_alternates_response(void *callback_data)
                                        while (tail->next != NULL)
                                                tail = tail->next;
                                        tail->next = newalt;
+                               } else {
+                                       strbuf_release(&target);
                                }
                        }
                }
@@ -334,9 +341,6 @@ static void fetch_alternates(struct walker *walker, const char *base)
        struct alternates_request alt_req;
        struct walker_data *cdata = walker->data;
 
-       if (http_follow_config != HTTP_FOLLOW_ALWAYS)
-               return;
-
        /*
         * If another request has already started fetching alternates,
         * wait for them to arrive and return to processing this request's