← Commit list

22ae8ac874

Daniel Stenberg
Daniel Stenberg
2025-10-06
SUCCESS Duration: 156s

Subject

libssh2/sftp_realpath: change state consistently

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

lib/vssh/libssh2.c+8 -11
@@ -1943,13 +1943,12 @@ static CURLcode ssh_state_sftp_realpath(struct Curl_easy *data,
if(rc == LIBSSH2_ERROR_EAGAIN)
return CURLE_AGAIN;
+ myssh_state(data, sshc, SSH_STOP);
if(rc > 0) {
free(sshc->homedir);
sshc->homedir = strdup(sshp->readdir_filename);
- if(!sshc->homedir) {
- myssh_state(data, sshc, SSH_SFTP_CLOSE);
+ if(!sshc->homedir)
return CURLE_OUT_OF_MEMORY;
- }
free(data->state.most_recent_ftp_entrypath);
data->state.most_recent_ftp_entrypath = strdup(sshc->homedir);
if(!data->state.most_recent_ftp_entrypath)
@@ -1962,21 +1961,19 @@ static CURLcode ssh_state_sftp_realpath(struct Curl_easy *data,
if(sftperr)
result = sftp_libssh2_error_to_CURLE(sftperr);
else
- /* in this case, the error was not in the SFTP level but for example
- a time-out or similar */
+ /* in this case, the error was not in the SFTP level but for example a
+ time-out or similar */
result = CURLE_SSH;
DEBUGF(infof(data, "error = %lu makes libcurl = %d",
sftperr, (int)result));
- myssh_state(data, sshc, SSH_STOP);
return result;
}
- /* This is the last step in the SFTP connect phase. Do note that while
- we get the homedir here, we get the "workingpath" in the DO action
- since the homedir will remain the same between request but the
- working path will not. */
+ /* This is the last step in the SFTP connect phase. Do note that while we
+ get the homedir here, we get the "workingpath" in the DO action since the
+ homedir will remain the same between request but the working path will
+ not. */
DEBUGF(infof(data, "SSH CONNECT phase done"));
- myssh_state(data, sshc, SSH_STOP);
return CURLE_OK;
}