From a43725b6f6a9748e5fdb91384bce360eab36ebde Mon Sep 17 00:00:00 2001 From: Date: Wed, 10 Apr 2019 00:45:01 -0500 Subject: [PATCH 1/3] Fix pam exec on musl --- modules/pam_exec/pam_exec.c | 9 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/pam_exec/pam_exec.c b/modules/pam_exec/pam_exec.c index 52dc681..3f70ea1 100644 --- a/modules/pam_exec/pam_exec.c +++ b/modules/pam_exec/pam_exec.c @@ -103,11 +103,14 @@ call_exec (const char *pam_type, pam_handle_t *pamh, int optargc; const char *logfile = NULL; const char *authtok = NULL; + char authtok_buf[PAM_MAX_RESP_SIZE+1]; + pid_t pid; int fds[2]; int stdout_fds[2]; FILE *stdout_file = NULL; + memset(authtok_buf, 0, sizeof(authtok_buf)); if (argc < 1) { pam_syslog (pamh, LOG_ERR, "This module needs at least one argument"); @@ -180,12 +183,12 @@ call_exec (const char *pam_type, pam_handle_t *pamh, if (resp) { pam_set_item (pamh, PAM_AUTHTOK, resp); - authtok = strndupa (resp, PAM_MAX_RESP_SIZE); + authtok = strncpy(authtok_buf, resp, sizeof(authtok_buf)); _pam_drop (resp); } } else - authtok = strndupa (void_pass, PAM_MAX_RESP_SIZE); + authtok = strncpy(authtok_buf, void_pass, sizeof(authtok_buf)); if (pipe(fds) != 0) { -- 2.21.0