diff options
author | Tobias Stoeckmann <tobias@stoeckmann.org> | 2024-01-01 22:10:21 +0100 |
---|---|---|
committer | Dmitry V. Levin <ldv@strace.io> | 2024-01-02 18:24:08 +0000 |
commit | f9d38b1f0cba7447573d1b773aeae4bde0421ef9 (patch) | |
tree | a1ba8430c60766093dc9d0a511fd6445154435d5 | |
parent | f669db5a94ac46a5b21ab58821cf94ece0442886 (diff) | |
download | pam-f9d38b1f0cba7447573d1b773aeae4bde0421ef9.tar.gz pam-f9d38b1f0cba7447573d1b773aeae4bde0421ef9.tar.bz2 pam-f9d38b1f0cba7447573d1b773aeae4bde0421ef9.zip |
pam_wheel: do not truncate group
If a pam configuration file contains a very long group name, do not
silently truncate it.
Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
-rw-r--r-- | modules/pam_wheel/pam_wheel.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/modules/pam_wheel/pam_wheel.c b/modules/pam_wheel/pam_wheel.c index 179f56b3..dd047afb 100644 --- a/modules/pam_wheel/pam_wheel.c +++ b/modules/pam_wheel/pam_wheel.c @@ -54,11 +54,11 @@ static int _pam_parse (const pam_handle_t *pamh, int argc, const char **argv, - char *use_group, size_t group_length) + const char **use_group) { int ctrl=0; - memset(use_group, '\0', group_length); + *use_group = ""; /* step through arguments */ for (ctrl=0; argc-- > 0; ++argv) { @@ -77,7 +77,7 @@ _pam_parse (const pam_handle_t *pamh, int argc, const char **argv, else if (!strcmp(*argv,"root_only")) ctrl |= PAM_ROOT_ONLY_ARG; else if ((str = pam_str_skip_prefix(*argv, "group=")) != NULL) - strncpy(use_group, str, group_length - 1); + *use_group = str; else { pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv); } @@ -237,10 +237,10 @@ int pam_sm_authenticate (pam_handle_t *pamh, int flags UNUSED, int argc, const char **argv) { - char use_group[BUFSIZ]; + const char *use_group; int ctrl; - ctrl = _pam_parse(pamh, argc, argv, use_group, sizeof(use_group)); + ctrl = _pam_parse(pamh, argc, argv, &use_group); return perform_check(pamh, ctrl, use_group); } @@ -256,10 +256,10 @@ int pam_sm_acct_mgmt (pam_handle_t *pamh, int flags UNUSED, int argc, const char **argv) { - char use_group[BUFSIZ]; + const char *use_group; int ctrl; - ctrl = _pam_parse(pamh, argc, argv, use_group, sizeof(use_group)); + ctrl = _pam_parse(pamh, argc, argv, &use_group); return perform_check(pamh, ctrl, use_group); } |