diff --git a/src/sbbs3/sftp.cpp b/src/sbbs3/sftp.cpp index d61afc4294be63332a8921efb4eeb6a84ab8534d..a389e7e06ac8b6a3f07fc990d6b4a2b2738da5f5 100644 --- a/src/sbbs3/sftp.cpp +++ b/src/sbbs3/sftp.cpp @@ -993,8 +993,10 @@ sftp_send(uint8_t *buf, size_t len, void *cb_data) while (sent < len) { pthread_mutex_lock(&sbbs->ssh_mutex); status = cryptSetAttribute(sbbs->ssh_session, CRYPT_SESSINFO_SSH_CHANNEL, sbbs->sftp_channel); - if (cryptStatusError(status)) + if (cryptStatusError(status)) { + pthread_mutex_unlock(&sbbs->ssh_mutex); return false; + } size_t sendbytes = len - sent; #define SENDBYTES_MAX 0x2000 if (sendbytes > SENDBYTES_MAX) diff --git a/src/sftp/sftp_server.c b/src/sftp/sftp_server.c index 87bc9fa097c88ba67c7b74d17c41c88995ee1295..1d047b22a36c9f117fe63df0a4ea075f1f6270e8 100644 --- a/src/sftp/sftp_server.c +++ b/src/sftp/sftp_server.c @@ -374,7 +374,7 @@ sftps_recv(sftps_state_t state, uint8_t *buf, uint32_t sz) uint32_t psz = sftp_pkt_sz(state->rxp); if (psz > SFTP_MAX_PACKET_SIZE) { state->lprintf(state->cb_data, "Packet too large (%" PRIu32 " bytes)", psz); - return false; + return exit_function(state, false); } } while (sftp_have_full_pkt(state->rxp)) {