aboutsummaryrefslogtreecommitdiff
path: root/pam_sql/pam_sql.c
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2020-03-29 17:39:54 +0300
committerSergey Poznyakoff <gray@gnu.org>2020-03-29 17:39:54 +0300
commitb6c720096e296f514cc8b254be8838f963fd9e06 (patch)
tree8f768c16b6059c026650f5393af1a911da894ee6 /pam_sql/pam_sql.c
parent5d4abc6e44f254a2e581e73ed818c42130fc765e (diff)
downloadpam-modules-b6c720096e296f514cc8b254be8838f963fd9e06.tar.gz
pam-modules-b6c720096e296f514cc8b254be8838f963fd9e06.tar.bz2
Use wordsplit for keyword expansion.
* .gitmodules: Add wordsplit * configure.ac: Likewise. * lib/Makefile.am: Likewise. * lib/graypam.h (gray_expand_argv): Remove. (gray_expand_string): Change prototype. * lib/vartab.c (gray_expand_argv): Remove. (gray_expand_string): Rewrite using wordsplit. * pam_ldaphome/pam_ldaphome.c (import_public_key): Assume sshPublicKey as a default attribute. * pam_log/pam_log.c (_pam_parse): Take two return arguments. (echo): Use gray_expand_string. * pam_sql/pam_mysql.c: Update gray_expand_string usage. * pam_sql/pam_pgsql.c: Likewise. * pam_sql/pam_sql.c: Likewise. * pam_sql/pam_sql.h (gpam_sql_get_query): Change signature. * pam_umotd/pam_umotd.c (pam_sm_open_session): Update gray_expand_string usage.
Diffstat (limited to 'pam_sql/pam_sql.c')
-rw-r--r--pam_sql/pam_sql.c36
1 files changed, 11 insertions, 25 deletions
diff --git a/pam_sql/pam_sql.c b/pam_sql/pam_sql.c
index 6707eb3..7a11df3 100644
--- a/pam_sql/pam_sql.c
+++ b/pam_sql/pam_sql.c
@@ -1,5 +1,5 @@
/* This file is part of pam-modules.
- Copyright (C) 2005-2008, 2010-2012, 2014-2015, 2018 Sergey Poznyakoff
+ Copyright (C) 2005-2020 Sergey Poznyakoff
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
@@ -161,11 +161,10 @@ gpam_sql_check_boolean_config(const char *name, int defval)
int
gpam_sql_get_query(pam_handle_t *pamh, const char *name, int required,
- gray_slist_t *pslist, const char **retptr)
+ char **retptr)
{
- gray_slist_t slist;
const char *query = gpam_sql_find_config(name);
- char *retval;
+ int rc;
if (!query) {
if (required) {
@@ -173,24 +172,13 @@ gpam_sql_get_query(pam_handle_t *pamh, const char *name, int required,
gpam_sql_config_file, name);
return PAM_AUTHINFO_UNAVAIL;
}
- *pslist = NULL;
*retptr = NULL;
return PAM_SUCCESS;
}
- slist = gray_slist_create();
- if (!slist)
- return errno_to_pam(errno);
- gray_expand_string(pamh, query, slist);
- gray_slist_append_char(slist, 0);
- *pslist = slist;
- retval = gray_slist_finish(slist);
- if (gray_slist_err(slist)) {
- int rc = errno_to_pam(gray_slist_err(slist));
- gray_slist_free(&slist);
+ rc = gray_expand_string(pamh, query, retptr);
+ if (rc != PAM_SUCCESS)
return rc;
- }
- *retptr = retval;
return PAM_SUCCESS;
}
@@ -226,18 +214,16 @@ pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv)
if (gray_env_read(gpam_sql_config_file, &config_env))
retval = PAM_SERVICE_ERR;
else {
- gray_slist_t slist;
- char const *query;
+ char *query;
/* FIXME: This comment is needed to pacify
`make check-sql-config' in doc:
gpam_sql_find_config("passwd-query") */
- retval = gpam_sql_get_query(pamh, "passwd-query", 1,
- &slist, &query);
+ retval = gpam_sql_get_query(pamh, "passwd-query", 1, &query);
if (retval == PAM_SUCCESS) {
retval = gpam_sql_verify_user_pass(pamh, password,
query);
- gray_slist_free(&slist);
+ free(query);
}
}
@@ -279,13 +265,13 @@ sql_session_mgmt(pam_handle_t *pamh, int flags,
retval = PAM_SERVICE_ERR;
else {
gray_slist_t slist;
- char const *query;
+ char *query;
- retval = gpam_sql_get_query(pamh, query_name, 0, &slist, &query);
+ retval = gpam_sql_get_query(pamh, query_name, 0, &query);
if (retval == PAM_SUCCESS) {
if (query) {
retval = gpam_sql_acct(pamh, query);
- gray_slist_free(&slist);
+ free(query);
}
}
}

Return to:

Send suggestions and report system problems to the System administrator.