Hi all,

I recognised sftp.c:sftp_packet_read() to hang in case the sftp client
closes the channel. Version under test: 0.7.3.

channel.remote_eof is set to 1, consequently ssh_channel_read() returns
0 causing the do {} while in sftp_packet_read() to loop infinitely.

The patch below solves the problem for me. Could anyone please confirm
or correct me?

Thanks a lot,
--Peter


--- sftp.c      2016-05-13 15:26:20.881799804 +0200
+++ sftp.c.fix  2016-05-13 15:28:35.028430265 +0200
@@ -335,5 +335,5 @@
     // read from channel until 4 bytes have been read or an error occurs
     s=ssh_channel_read(sftp->channel, buffer+r, 4-r, 0);
-    if (s < 0) {
+    if (s <= 0) {
       ssh_buffer_free(packet->payload);
       SAFE_FREE(packet);

Reply via email to