diff options
author | Tobias Stoeckmann <tobias@stoeckmann.org> | 2023-11-12 17:16:35 +0100 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2023-11-29 15:40:53 +0000 |
commit | f2fef8e3a84507ae15e40ac9b37256a4f7484500 (patch) | |
tree | 02f3241cdc63213668c8299bb3c4b02b59335ee4 /modules/pam_mkhomedir | |
parent | 8d082da1bc993b5b061ae81a9743891328e04ce6 (diff) | |
download | pam-f2fef8e3a84507ae15e40ac9b37256a4f7484500.tar.gz pam-f2fef8e3a84507ae15e40ac9b37256a4f7484500.tar.bz2 pam-f2fef8e3a84507ae15e40ac9b37256a4f7484500.zip |
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 <tobias@stoeckmann.org>
Diffstat (limited to 'modules/pam_mkhomedir')
-rw-r--r-- | modules/pam_mkhomedir/mkhomedir_helper.c | 18 |
1 files 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); |