Address feedback
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
diff --git a/src/transports/cred_helpers.c b/src/transports/cred_helpers.c
index a05d5e8..d420e3e 100644
--- a/src/transports/cred_helpers.c
+++ b/src/transports/cred_helpers.c
@@ -23,7 +23,9 @@ int git_cred_userpass(
if (!userpass || !userpass->password) return -1;
/* Username resolution: a username can be passed with the URL, the
- * credentials payload, or both. Here's what we do.
+ * credentials payload, or both. Here's what we do. Note that if we get
+ * this far, we know that any password the url may contain has already
+ * failed at least once, so we ignore it.
*
* | Payload | URL | Used |
* +-------------+----------+-----------+
@@ -32,10 +34,12 @@ int git_cred_userpass(
* | no | yes | url |
* | no | no | FAIL |
*/
- effective_username = userpass->username;
- if (!userpass->username && user_from_url)
+ if (userpass->username)
+ effective_username = userpass->username;
+ else if (user_from_url)
effective_username = user_from_url;
- if (!effective_username) return -1;
+ else
+ return -1;
if ((GIT_CREDTYPE_USERPASS_PLAINTEXT & allowed_types) == 0 ||
git_cred_userpass_plaintext_new(cred, effective_username, userpass->password) < 0)
diff --git a/src/transports/git.c b/src/transports/git.c
index a36a0a7..3a0b863 100644
--- a/src/transports/git.c
+++ b/src/transports/git.c
@@ -201,8 +201,8 @@ static int _git_uploadpack_ls(
t->current_stream = s;
git__free(host);
git__free(port);
- if (user) git__free(user);
- if (pass) git__free(pass);
+ git__free(user);
+ git__free(pass);
return 0;
on_error:
@@ -257,8 +257,8 @@ static int _git_receivepack_ls(
t->current_stream = s;
git__free(host);
git__free(port);
- if (user) git__free(user);
- if (pass) git__free(pass);
+ git__free(user);
+ git__free(pass);
return 0;
on_error: