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

Fix exception when reading duplicate sftp extensions #727

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/Renci.SshNet/Common/SshData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,14 @@ protected IDictionary<string, string> ReadExtensionPair()
{
var extensionName = ReadString(Ascii);
var extensionData = ReadString(Ascii);
result.Add(extensionName, extensionData);
if (result.ContainsKey(extensionName)) //if sftp extension is present multiple-times then keep the last one
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's difficult to judge what the right behavior is for duplicate extension value.
Do you have a specification reference for SFTP extension to support a decision one way or another?
Can there be an approach similar to HTTP's multiple value for same header, which combines the values to a string with a known separator?
Or update the dictionary to be <string, IEnumerable>

{
result[extensionName] = extensionData;
}
else
{
result.Add(extensionName, extensionData);
}
}
return result;
}
Expand Down