Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add empty string in non-multi dictionary for empty lines #1332

Merged
merged 1 commit into from
Jul 12, 2023

Conversation

mjcheetham
Copy link
Collaborator

@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 vdye and ldennington 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