From f2fef8e3a84507ae15e40ac9b37256a4f7484500 Mon Sep 17 00:00:00 2001 From: Tobias Stoeckmann Date: Sun, 12 Nov 2023 17:16:35 +0100 Subject: pam_mkhomedir: always call chown/chmod for dir In some error cases in create_homedir ownership and mode of the newly created directory are not set. Always do so to prevent root-owned directories as error leftovers. Signed-off-by: Tobias Stoeckmann --- modules/pam_mkhomedir/mkhomedir_helper.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/pam_mkhomedir/mkhomedir_helper.c b/modules/pam_mkhomedir/mkhomedir_helper.c index 1d18ee88..67b6f34e 100644 --- a/modules/pam_mkhomedir/mkhomedir_helper.c +++ b/modules/pam_mkhomedir/mkhomedir_helper.c @@ -131,7 +131,8 @@ create_homedir(const struct passwd *pwd, if (pointed == NULL) { free(newsource); free(newdest); - return PAM_BUF_ERR; + retval = PAM_BUF_ERR; + goto go_out; } pointedlen = readlink(newsource, pointed, size); if (pointedlen < 0) break; @@ -163,7 +164,8 @@ create_homedir(const struct passwd *pwd, #endif free(newsource); free(newdest); - return PAM_PERM_DENIED; + retval = PAM_PERM_DENIED; + goto go_out; } } #ifndef PATH_MAX @@ -196,7 +198,8 @@ create_homedir(const struct passwd *pwd, free(newsource); free(newdest); - return PAM_PERM_DENIED; + retval = PAM_PERM_DENIED; + goto go_out; } /* Open the dest file */ @@ -209,7 +212,8 @@ create_homedir(const struct passwd *pwd, free(newsource); free(newdest); - return PAM_PERM_DENIED; + retval = PAM_PERM_DENIED; + goto go_out; } /* Set the proper ownership and permissions for the module. We make @@ -227,7 +231,8 @@ create_homedir(const struct passwd *pwd, free(newsource); free(newdest); - return PAM_PERM_DENIED; + retval = PAM_PERM_DENIED; + goto go_out; } /* Copy the file */ @@ -253,7 +258,8 @@ create_homedir(const struct passwd *pwd, free(newsource); free(newdest); - return PAM_PERM_DENIED; + retval = PAM_PERM_DENIED; + goto go_out; } while (res != 0); close(srcfd); -- cgit v1.2.3