diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2020-03-29 17:39:54 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2020-03-29 17:39:54 +0300 |
commit | b6c720096e296f514cc8b254be8838f963fd9e06 (patch) | |
tree | 8f768c16b6059c026650f5393af1a911da894ee6 /pam_sql/pam_sql.c | |
parent | 5d4abc6e44f254a2e581e73ed818c42130fc765e (diff) | |
download | pam-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.c | 36 |
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); } } } |