Anton Scheffer
2015-Mar-19 19:52 UTC
One SSH_FXP_DATA record split over SSH_MSG_CHANNEL_DATA packets
Hi,
I'm developing my own sftp client.
When I try to read a file larger than 16371 bytes from a OpenSSH server my
program fails.
And that is because it doesn't expect a SSH_FXP_DATA record to be send
through two SSH_MSG_CHANNEL_DATA packets.
For instance:
First a SSH_MSG_CHANNEL_DATA packet containing the start of a SSH_FXP_DATA
record
read_packet: done 16393
read_packet: done
5E0000007B0000400000003FFF67000000FC00003FF60101010101010101....
And then a SSH_MSG_CHANNEL_DATA packet containing the last part the
SSH_FXP_DATA record
read_packet: done 12
read_packet: done 5E0000007B00000003AA1133
Is this normal, to be expected, behavior? I can't find anything regarding
this in the RFC's.
I see this on OpenSSH_6.4 and OpenSSH_4.3 using these settings
aes128-cbc
aes128-cbc
hmac-sha1
hmac-sha1
none
none
Anton
Damien Miller
2015-Mar-19 21:39 UTC
One SSH_FXP_DATA record split over SSH_MSG_CHANNEL_DATA packets
On Thu, 19 Mar 2015, Anton Scheffer wrote:> Hi, > > I'm developing my own sftp client. > > When I try to read a file larger than 16371 bytes from a OpenSSH > server my program fails. And that is because it doesn't expect a > SSH_FXP_DATA record to be send through two SSH_MSG_CHANNEL_DATA > packets....> Is this normal, to be expected, behavior? I can't find anything > regarding this in the RFC's.Yes, the filexfer runs atop the channel protocol and is completely ignorant of the latter's framing of its messages. In OpenSSH, they are totally separate programs. -d