Skip to content

Commit

Permalink
SftpClient: allow SSH_FXP_VERSION extension data to be non-UTF8.
Browse files Browse the repository at this point in the history
  • Loading branch information
tmds committed Feb 19, 2025
1 parent 17a9f31 commit 811b71e
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 15 deletions.
15 changes: 6 additions & 9 deletions src/Tmds.Ssh/SftpChannel.Reader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,7 @@ public long ReadInt64()
}

public string ReadString()
{
int length = ReadInt();
string value = s_utf8Encoding.GetString(_remainder.Slice(0, length));
_remainder = _remainder.Slice(length);
return value;
}
=> s_utf8Encoding.GetString(ReadStringAsSpan());

public void SkipString()
{
Expand All @@ -59,15 +54,17 @@ public void SkipString(out int length)
_remainder = _remainder.Slice(length);
}

public byte[] ReadStringAsByteArray()
public ReadOnlySpan<byte> ReadStringAsSpan()
{
int length = ReadInt();
byte[] value = new byte[length];
_remainder.Slice(0, length).CopyTo(value);
ReadOnlySpan<byte> value = _remainder.Slice(0, length);
_remainder = _remainder.Slice(length);
return value;
}

public byte[] ReadStringAsByteArray()
=> ReadStringAsSpan().ToArray();

public byte ReadByte()
{
byte value = _remainder[0];
Expand Down
10 changes: 4 additions & 6 deletions src/Tmds.Ssh/SftpChannel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1438,14 +1438,12 @@ private void HandleVersionPacket(ReadOnlySpan<byte> packet)
SftpExtension supportedExtensions = default;
while (!reader.Remainder.IsEmpty)
{
string extensionName = reader.ReadString();
string extensionData = reader.ReadString();
ReadOnlySpan<byte> extensionName = reader.ReadStringAsSpan();
ReadOnlySpan<byte> extensionData = reader.ReadStringAsSpan();

switch (extensionName, extensionData)
if (extensionName.SequenceEqual("copy-data"u8) && extensionData.SequenceEqual("1"u8))
{
case ("copy-data", "1"):
supportedExtensions |= SftpExtension.CopyData;
break;
supportedExtensions |= SftpExtension.CopyData;
}
}

Expand Down

0 comments on commit 811b71e

Please sign in to comment.