Skip to content

Conversation

@mjcheetham
Copy link
Contributor

@mjcheetham mjcheetham commented Jul 12, 2023

Before 2.2.0, we only accepted input arguments in the form key=value. To support the new wwwauth[] argument from Git, we added support for these multi-value args key[]=value.

In changing from an dictionary of string:string to string:list<string> we accidentally changed the behaviour of dictionary parsing in the case that an empty valued (non-multi) argument was provided. For example:

username=\n

Previously this was returned as an empty string. Post 2.2.0 this became null, causing an error in scenarios were before there was none.

One such scenario is with Windows Integrated Authentication (for example when connecting to Azure DevOps Server/TFS instances), whereby we return an empty username and password to Git to signal this auth mode. Git then returns to us the empty username and password in a store call.

Update the handling in ParseMultiLine to restore the previous behaviour for empty-valued arguments being mapped to the empty string.

Fixes #1331


Bug reproduction steps:

% printf "url=https://example.com\nusername=\npassword=\n\n" | git credential approve
fatal: Missing 'username' input argument

Before 2.2.0, we only accepted input arguments in the form key=value.
To support the new wwwauth[] argument from Git, we added support for
these multi-value args key[]=value.

In changing from an dictionary of string:string to string:list<string>
we accidentally changed the behaviour of dictionary parsing in the case
that an empty valued argument was provided. For example:

username=\n

Preivously this was returned as an empty string. Post 2.2.0 this became
`null`, causing an error in scenarios were before there was none.

One such scenario is with Windows Integrated Authentication (for example
when connecting to Azure DevOps Server/TFS instances), whereby we return
an empty username and password to Git to signal this auth mode. Git then
returns to us the empty username and password in a `store` call.

Update the handling in `ParseMultiLine` to restore the previous behaviour
for empty-valued arguments being mapped to the empty string.
@mjcheetham mjcheetham requested review from ldennington and vdye July 12, 2023 18:01
@mjcheetham mjcheetham merged commit a36bb0e into git-ecosystem:main Jul 12, 2023
@mjcheetham mjcheetham deleted the fix-empty-arg branch July 12, 2023 18:13
@mjcheetham mjcheetham mentioned this pull request Jul 12, 2023
mjcheetham added a commit that referenced this pull request Jul 12, 2023
**Changes since 2.2.1:**

- Fix an issue where duplicate "Personal Access Token" GitHub account
options are shown when Visual Studio has a GitHub account signed-in
(#1325 #1328)
- Fix an issue with Azure DevOps Server (TFS) and Windows Integrated
Authentication (#1331 #1332)
- Fix an issue with OAuth redirects GitHub Enterprise Server (#1329
#1330)
- Correctly handle non-ASCII username/passwords with the WPF UI helpers
(#1287 #1326)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Username error message when using Windows Integrated Authentication

2 participants