libssh2 icon indicating copy to clipboard operation
libssh2 copied to clipboard

scp_recv2 - cannot download file with a name longer than 246 chars

Open psiquo opened this issue 3 months ago • 1 comments

Describe the bug When testing scp file download via libssh2_scp_recv2 if the filename in the destination is longer than 246 chars the transfer fails with Error: -28 - Unterminated response from SCP server.

To Reproduce Compile the scp.c example and run: examples/.libs/scp <destination> <user> <password> <filename longer than 246 chars>

Expected behavior The example should print on stdout the contents of the requested file.

Version (please complete the following information):

  • OS and version: Windows 11 - Tested inside Ubuntu 24.04.3 WSL
  • libssh2 version: Tested on both 1.11.1 and master
  • crypto backend and version: Openssl

Additional context Checking the source code the error is created by this code (lines 664-671 inside src/scp.c).

                      if(session->scpRecv_response_len ==
                          LIBSSH2_SCP_RESPONSE_BUFLEN) {
                          /* You had your chance */
                          _libssh2_error(session, LIBSSH2_ERROR_SCP_PROTOCOL,
                                         "[2] Unterminated response "
                                         "from SCP server");

psiquo avatar Nov 04 '25 13:11 psiquo

When testing using openssh scp and sftp the xfs-filesystem limits the filename to 255 characters. Maybe libssh2 is missing 9 characters.

Error in OpenSSH scp when trying to copy to a file with a length > 255 is "Filename to long"

Error in OpeSSH sftp when trying to copy to a file with a length > 255 is "Bad message"

LarsNordin-LNdata avatar Nov 26 '25 16:11 LarsNordin-LNdata