aboutsummaryrefslogtreecommitdiff
path: root/libpam/pam_handlers.c
diff options
context:
space:
mode:
authorTobias Stoeckmann <tobias@stoeckmann.org>2023-11-11 17:20:26 +0100
committerDmitry V. Levin <ldv@strace.io>2023-11-12 22:55:00 +0000
commit71bb66067f979350921a9be58fc534822a15363c (patch)
tree88dcaf015a0b69cad481cd36b1049376ba0ff6fb /libpam/pam_handlers.c
parentcb13aa40cb4ea0c8f1d12d79cbf9ed94828c837f (diff)
downloadpam-71bb66067f979350921a9be58fc534822a15363c.tar.gz
pam-71bb66067f979350921a9be58fc534822a15363c.tar.bz2
pam-71bb66067f979350921a9be58fc534822a15363c.zip
libpam: drop module if memory allocation failed
The argument vector for a module is created in _pam_parse_conf_file, which is performed by _pam_mkargv. If memory allocation fails in _pam_mkargv, then an empty argv is returned. This has to be checked by the caller to not silently drop arguments requested by configuration. Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
Diffstat (limited to 'libpam/pam_handlers.c')
-rw-r--r--libpam/pam_handlers.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/libpam/pam_handlers.c b/libpam/pam_handlers.c
index fdc2b8a3..61466f8a 100644
--- a/libpam/pam_handlers.c
+++ b/libpam/pam_handlers.c
@@ -233,6 +233,15 @@ static int _pam_parse_conf_file(pam_handle_t *pamh, FILE *f
D(("list: %s",nexttok));
argvlen = _pam_mkargv(nexttok, &argv, &argc);
D(("argvlen = %d",argvlen));
+ if (argvlen == 0) {
+ /* memory allocation failed */
+ D(("failed to allocate argument vector"));
+ pam_syslog(pamh, LOG_ERR,
+ "(%s) argument vector allocation failed",
+ this_service);
+ mod_path = NULL;
+ handler_type = PAM_HT_MUST_FAIL;
+ }
} else { /* there are no arguments so fix by hand */
D(("empty argument list"));
argvlen = argc = 0;