From ee68ef93335e3f3102aefb84d49bc30d27e8a742 Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Thu, 1 Sep 2022 12:39:36 -0700 Subject: [PATCH] change default path with sftp and chroot --- apps/wolfsshd/wolfsshd.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/apps/wolfsshd/wolfsshd.c b/apps/wolfsshd/wolfsshd.c index 2fff73a5..f83f2a20 100644 --- a/apps/wolfsshd/wolfsshd.c +++ b/apps/wolfsshd/wolfsshd.c @@ -322,15 +322,6 @@ static int SFTP_Subsystem(WOLFSSHD_CONNECTION* conn, WOLFSSH* ssh, return WS_FATAL_ERROR; } - /* set starting SFTP directory */ - if (ret == WS_SUCCESS) { - if (wolfSSH_SFTP_SetDefaultPath(ssh, pPasswd->pw_dir) != WS_SUCCESS) { - wolfSSH_Log(WS_LOG_ERROR, - "[SSHD] Error setting SFTP default home path"); - ret = WS_FATAL_ERROR; - } - } - if (ret == WS_SUCCESS) { error = SetupChroot(usrConf); if (error == 1) { @@ -346,6 +337,22 @@ static int SFTP_Subsystem(WOLFSSHD_CONNECTION* conn, WOLFSSH* ssh, } } + /* set starting SFTP directory */ + if (ret == WS_SUCCESS) { + WDIR dir; + + /* if home directory exists than set it as the default */ + if (WOPENDIR(NULL, NULL, &dir, pPasswd->pw_dir) == 0) { + if (wolfSSH_SFTP_SetDefaultPath(ssh, pPasswd->pw_dir) + != WS_SUCCESS) { + wolfSSH_Log(WS_LOG_ERROR, + "[SSHD] Error setting SFTP default home path"); + ret = WS_FATAL_ERROR; + } + WCLOSEDIR(&dir); + } + } + if (wolfSSHD_AuthReducePermissionsUser(conn->auth, pPasswd->pw_uid, pPasswd->pw_gid) != WS_SUCCESS) { wolfSSH_Log(WS_LOG_ERROR, "[SSHD] Error setting user ID");