From e411492c06252fe4a9eaaaaca703bfff76c5a4b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Deuc=D0=B5?= <shurd@sasktel.net>
Date: Wed, 28 Feb 2024 23:49:53 -0500
Subject: [PATCH] Some locking cleanups

---
 src/sbbs3/sftp.cpp     | 4 +++-
 src/sftp/sftp_server.c | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/sftp.cpp b/src/sbbs3/sftp.cpp
index d61afc4294..a389e7e06a 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 87bc9fa097..1d047b22a3 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)) {
-- 
GitLab