diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-11-09 14:31:31 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-11-09 14:31:31 +0900 |
commit | 55b5d92092ac68824a5502aeb83b9176ee8e2890 (patch) | |
tree | d9f76890d968d33b5ad7280be2e00f3767f2feb9 /contrib/credential | |
parent | d3e32dc90c800ef35a7e5f52906a0bedae2ae008 (diff) | |
parent | 601e1e7897022b1f166c81e58c95e9afa06cac25 (diff) | |
download | git-55b5d92092ac68824a5502aeb83b9176ee8e2890.tar.gz |
Merge branch 'js/wincred-empty-cred'
MinGW updates.
* js/wincred-empty-cred:
wincred: handle empty username/password correctly
t0302: check helper can handle empty credentials
Diffstat (limited to 'contrib/credential')
-rw-r--r-- | contrib/credential/wincred/git-credential-wincred.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/contrib/credential/wincred/git-credential-wincred.c b/contrib/credential/wincred/git-credential-wincred.c index 006134043a..86518cd93d 100644 --- a/contrib/credential/wincred/git-credential-wincred.c +++ b/contrib/credential/wincred/git-credential-wincred.c @@ -94,6 +94,12 @@ static WCHAR *wusername, *password, *protocol, *host, *path, target[1024]; static void write_item(const char *what, LPCWSTR wbuf, int wlen) { char *buf; + + if (!wbuf || !wlen) { + printf("%s=\n", what); + return; + } + int len = WideCharToMultiByte(CP_UTF8, 0, wbuf, wlen, NULL, 0, NULL, FALSE); buf = xmalloc(len); @@ -160,7 +166,7 @@ static int match_part_last(LPCWSTR *ptarget, LPCWSTR want, LPCWSTR delim) static int match_cred(const CREDENTIALW *cred) { LPCWSTR target = cred->TargetName; - if (wusername && wcscmp(wusername, cred->UserName)) + if (wusername && wcscmp(wusername, cred->UserName ? cred->UserName : L"")) return 0; return match_part(&target, L"git", L":") && @@ -183,7 +189,7 @@ static void get_credential(void) for (i = 0; i < num_creds; ++i) if (match_cred(creds[i])) { write_item("username", creds[i]->UserName, - wcslen(creds[i]->UserName)); + creds[i]->UserName ? wcslen(creds[i]->UserName) : 0); write_item("password", (LPCWSTR)creds[i]->CredentialBlob, creds[i]->CredentialBlobSize / sizeof(WCHAR)); |