summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/pam_env/pam_env.c3
-rw-r--r--modules/pam_mkhomedir/pam_mkhomedir.c16
2 files changed, 9 insertions, 10 deletions
diff --git a/modules/pam_env/pam_env.c b/modules/pam_env/pam_env.c
index f140f3cb..52e54490 100644
--- a/modules/pam_env/pam_env.c
+++ b/modules/pam_env/pam_env.c
@@ -588,7 +588,8 @@ static int _expand_arg(pam_handle_t *pamh, char **value)
_log_err(LOG_ERR, "Unterminated expandable variable: <%s>", orig-2);
return PAM_ABORT;
}
- strncpy(tmpval, orig, (size_t) BUF_SIZE);
+ strncpy(tmpval, orig, sizeof(tmpval));
+ tmpval[sizeof(tmpval)-1] = '\0';
orig=ptr;
/*
* so, we know we need to expand tmpval, it is either
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);
}
}