diff --git a/src/syncterm/ssh.c b/src/syncterm/ssh.c
index 4ec8969b8d363648b39451e684a85b0e6e667146..ec219a396209e918bb9dc762d37c594ded18ca30 100644
--- a/src/syncterm/ssh.c
+++ b/src/syncterm/ssh.c
@@ -614,7 +614,8 @@ add_public_key(void *vpriv)
 			sftpc_state_t oldstate = sftp_state;
 			sftp_state = NULL;
 			pthread_mutex_unlock(&ssh_mutex);
-			sftpc_finish(oldstate);
+			if (oldstate)
+				sftpc_finish(oldstate);
 		}
 		close_sftp_channel(sftp_channel);
 	}