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