From 78caec5a512b2c8db455bd60710ae800d5efd2ed Mon Sep 17 00:00:00 2001 From: Twarit Waikar Date: Thu, 14 Oct 2021 04:22:37 +0530 Subject: [PATCH] Respect username extracted from URL in credential callback --- godot-git-plugin/src/git_common.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/godot-git-plugin/src/git_common.cpp b/godot-git-plugin/src/git_common.cpp index f4b78f4..e967a24 100644 --- a/godot-git-plugin/src/git_common.cpp +++ b/godot-git-plugin/src/git_common.cpp @@ -77,20 +77,22 @@ extern "C" int push_update_reference_cb(const char *refname, const char *status, extern "C" int credentials_cb(git_cred **out, const char *url, const char *username_from_url, unsigned int allowed_types, void *payload) { Credentials *creds = (Credentials *)payload; + godot::String proper_username = username_from_url ? username_from_url : creds->username; + if (allowed_types & GIT_CREDENTIAL_USERPASS_PLAINTEXT) { - return git_cred_userpass_plaintext_new(out, godot::CString(creds->username).data, godot::CString(creds->password).data); + return git_cred_userpass_plaintext_new(out, godot::CString(proper_username).data, godot::CString(creds->password).data); } if (allowed_types & GIT_CREDENTIAL_SSH_KEY) { return git_credential_ssh_key_new(out, - godot::CString(creds->username).data, + godot::CString(proper_username).data, godot::CString(creds->ssh_public_key_path).data, godot::CString(creds->ssh_private_key_path).data, godot::CString(creds->ssh_passphrase).data); } if (allowed_types & GIT_CREDENTIAL_USERNAME) { - return git_credential_username_new(out, godot::CString(creds->username).data); + return git_credential_username_new(out, godot::CString(proper_username).data); } return GIT_EUSER;