summaryrefslogtreecommitdiff
path: root/modules/pam_mkhomedir
diff options
context:
space:
mode:
authorAndrew G. Morgan <morgan@kernel.org>2001-10-12 06:13:10 +0000
committerAndrew G. Morgan <morgan@kernel.org>2001-10-12 06:13:10 +0000
commit47c5c31a6ceb6abe8b406eb74d87aa429c3b93ea (patch)
treebf9ac7ab982ac91da3a485e161ac8981c4bdabaf /modules/pam_mkhomedir
parent094652b733bf2422420213c4e87af920ff05e6f3 (diff)
Relevant BUGIDs: 435991
Purpose of commit: bugfix Commit summary: --------------- use strncpy, and even then remember to nul terminate. Courtesy of Harald Welte.
Diffstat (limited to 'modules/pam_mkhomedir')
-rw-r--r--modules/pam_mkhomedir/pam_mkhomedir.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/modules/pam_mkhomedir/pam_mkhomedir.c b/modules/pam_mkhomedir/pam_mkhomedir.c
index ec05993d..ec6bd46d 100644
--- a/modules/pam_mkhomedir/pam_mkhomedir.c
+++ b/modules/pam_mkhomedir/pam_mkhomedir.c
@@ -57,7 +57,7 @@
#define MKHOMEDIR_QUIET 040 /* keep quiet about things */
static unsigned int UMask = 0022;
-static char SkelDir[BUFSIZ] = "/etc/skel";
+static char SkelDir[BUFSIZ] = "/etc/skel"; /* THIS MODULE IS NOT THREAD SAFE */
/* some syslogging */
static void _log_err(int err, const char *format, ...)
@@ -82,16 +82,14 @@ static int _pam_parse(int flags, int argc, const char **argv)
/* step through arguments */
for (; argc-- > 0; ++argv)
{
- if (!strcmp(*argv, "silent"))
- {
+ if (!strcmp(*argv, "silent")) {
ctrl |= MKHOMEDIR_QUIET;
- }
- else if (!strncmp(*argv,"umask=",6))
+ } else if (!strncmp(*argv,"umask=",6)) {
UMask = strtol(*argv+6,0,0);
- else if (!strncmp(*argv,"skel=",5))
- strcpy(SkelDir,*argv+5);
- else
- {
+ } else if (!strncmp(*argv,"skel=",5)) {
+ strncpy(SkelDir,*argv+5,sizeof(SkelDir));
+ SkelDir[sizeof(SkelDir)-1] = '\0';
+ } else {
_log_err(LOG_ERR, "unknown option; %s", *argv);
}
}