From ac8271d020848bca7da0976bd4eeb57a0bb4178e Mon Sep 17 00:00:00 2001 From: Eshan Kelkar Date: Tue, 8 Jul 2025 12:42:29 +0530 Subject: [PATCH] libssh: fix readdir issues Signed-off-by: Eshan Kelkar Closes #17856 --- lib/vssh/libssh.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/vssh/libssh.c b/lib/vssh/libssh.c index 4a272e4535..3bae943c7c 100644 --- a/lib/vssh/libssh.c +++ b/lib/vssh/libssh.c @@ -648,7 +648,7 @@ static int myssh_in_SFTP_READDIR(struct Curl_easy *data, myssh_to(data, sshc, SSH_SFTP_READDIR_DONE); } else { - failf(data, "Could not open remote file for reading: %s", + failf(data, "Could not open remote directory for reading: %s", ssh_get_error(sshc->ssh_session)); return myssh_to_SFTP_CLOSE(data, sshc); } @@ -663,7 +663,7 @@ static int myssh_in_SFTP_READDIR_LINK(struct Curl_easy *data, sshc->readdir_link_attrs = sftp_lstat(sshc->sftp_session, sshc->readdir_linkPath); - if(sshc->readdir_link_attrs == 0) { + if(!sshc->readdir_link_attrs) { failf(data, "Could not read symlink for reading: %s", ssh_get_error(sshc->ssh_session)); return myssh_to_SFTP_CLOSE(data, sshc); @@ -672,7 +672,7 @@ static int myssh_in_SFTP_READDIR_LINK(struct Curl_easy *data, if(!sshc->readdir_link_attrs->name) { sshc->readdir_tmp = sftp_readlink(sshc->sftp_session, sshc->readdir_linkPath); - if(!sshc->readdir_filename) + if(!sshc->readdir_tmp) sshc->readdir_len = 0; else sshc->readdir_len = strlen(sshc->readdir_tmp); @@ -689,6 +689,14 @@ static int myssh_in_SFTP_READDIR_LINK(struct Curl_easy *data, if(curlx_dyn_addf(&sshc->readdir_buf, " -> %s", sshc->readdir_filename)) { + /* Not using: + * return myssh_to_SFTP_CLOSE(data, sshc); + * + * as that assumes an sftp related error while + * assigning sshc->actualcode whereas the current + * error is curlx_dyn_addf() related. + */ + myssh_to(data, sshc, SSH_SFTP_CLOSE); sshc->actualcode = CURLE_OUT_OF_MEMORY; return SSH_ERROR; } -- 2.47.2