summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Hathaway <jesse@mbuki-mvuki.org>2020-07-10 15:37:08 +0000
committerJesse Hathaway <jesse@mbuki-mvuki.org>2020-07-10 15:37:08 +0000
commitbd346313e0947dcef9e789c0ad05d131a80a12bd (patch)
tree26c966d3ea16ff2a38962f0a03d2cbb563cd7992
parent8720ae8a2c9045cb9494d328e3fc6370decbb774 (diff)
downloadlibgit2-bd346313e0947dcef9e789c0ad05d131a80a12bd.tar.gz
httpclient: only free challenges for current_server type
Prior to this commit we freed both the server and proxy auth challenges in git_http_client_read_response. This works when the proxy needs auth or when the server needs auth, but it does not work when both the proxy and the server need auth as we erroneously remove the server auth challenge before we have added them as server credentials. Instead only remove the challenges for the current_server type. Co-authored-by: Stephen Gelman <ssgelm@gmail.com>
-rw-r--r--src/transports/httpclient.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/transports/httpclient.c b/src/transports/httpclient.c
index dda267833..715213052 100644
--- a/src/transports/httpclient.c
+++ b/src/transports/httpclient.c
@@ -1374,8 +1374,11 @@ int git_http_client_read_response(
git_http_response_dispose(response);
- git_vector_free_deep(&client->server.auth_challenges);
- git_vector_free_deep(&client->proxy.auth_challenges);
+ if (client->current_server == PROXY) {
+ git_vector_free_deep(&client->proxy.auth_challenges);
+ } else if(client->current_server == SERVER) {
+ git_vector_free_deep(&client->server.auth_challenges);
+ }
client->state = READING_RESPONSE;
client->keepalive = 0;