diff --git a/src/syncterm/ssh.c b/src/syncterm/ssh.c index 85ca873d55eaecca59d9db6dac5bca0004b86fd1..3adb7c02ec542c4e8b4362b50bf457a438545667 100644 --- a/src/syncterm/ssh.c +++ b/src/syncterm/ssh.c @@ -457,11 +457,13 @@ key_not_present(sftp_filehandle_t f, const char *priv) bufsz += 4096; } if (!sftpc_read(sftp_state, f, off, (bufsz - bufpos > 1024) ? 1024 : bufsz - bufpos, &r)) { + free(buf); + pthread_mutex_lock(&ssh_mutex); if (sftp_state->err_code == SSH_FX_EOF) { - free(buf); + pthread_mutex_unlock(&ssh_mutex); return true; } - free(buf); + pthread_mutex_unlock(&ssh_mutex); return false; } memcpy(&buf[bufpos], r->c_str, r->len);