diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-02-27 14:54:58 +0000 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2009-02-27 14:54:58 +0000 |
commit | aaf0e433317374ee564582c75389389b60fd7b27 (patch) | |
tree | 9cb64965ce7754c6f7f276d5341ee478a5b382ab /pam_sql/pam_mysql.c | |
parent | a6ce07e20e5cb3090f5b21dbe6d428d921a931ee (diff) | |
download | pam-modules-aaf0e433317374ee564582c75389389b60fd7b27.tar.gz pam-modules-aaf0e433317374ee564582c75389389b60fd7b27.tar.bz2 |
Rewrite Makefile.am's in a clearer and simpler way
* configure.ac: Require libtool 2.2.5a
* Make.rules (.c.lo, .lo.la): Remove
(AM_LDFLAGS, INCLUDES, LIBS): New assignments.
* pam_sql/Makefile.am, pam_fshadow/Makefile.am,
pam_sql/Makefile.am, pam_regex/Makefile.am,
pam_log/Makefile.am: Rewrite.
* pam_sql/pam_sql.h, pam_sql/pam_mysql.c, pam_sql/pam_pgsql.c.
pam_sql/pam_sql.c: Rewrite.
* pam_sql/sha1.h, pam_sql/md5.c, pam_sql/md5.h, pam_sql/sha1.c
* pam_fshadow/pam_fshadow.c: New option [no]shadow
* doc/pam-modules.texi: Update.
* lib/graypam.h (gray_trim_ws): New proto
* lib/strutil.c: New file.
* lib/Makefile.am: Add strutil.c
git-svn-id: file:///svnroot/pam-modules/trunk@105 56984be4-0537-0410-a56c-fcb268c96130
Diffstat (limited to 'pam_sql/pam_mysql.c')
-rw-r--r-- | pam_sql/pam_mysql.c | 65 |
1 files changed, 41 insertions, 24 deletions
diff --git a/pam_sql/pam_mysql.c b/pam_sql/pam_mysql.c index 6b34b37..9b742fb 100644 --- a/pam_sql/pam_mysql.c +++ b/pam_sql/pam_mysql.c @@ -15,11 +15,11 @@ with this program. If not, see <http://www.gnu.org/licenses/>. */ #include <graypam.h> +#include <string.h> #include <mysql/mysql.h> +#include "pam_sql.h" -#include "pam_sql.c" -#include "sha1.h" -#include "md5.h" +char *gpam_sql_module_name = "pam_mysql"; /* MySQL scrambled password support */ @@ -177,13 +177,13 @@ static int check_md5_pass(const char *sqlpass, const char *userpass) { char md5str[33]; - struct md5_ctx ctx; + struct gpam_md5_ctx ctx; unsigned char digest[16]; md5str[0] = 0; - md5_init_ctx (&ctx); - md5_process_bytes (userpass, strlen (userpass), &ctx); - md5_finish_ctx (&ctx, digest); + gpam_md5_init_ctx (&ctx); + gpam_md5_process_bytes (userpass, strlen (userpass), &ctx); + gpam_md5_finish_ctx (&ctx, digest); make_digest (md5str, digest); if (strcmp (sqlpass, md5str) == 0) return PAM_SUCCESS; @@ -219,21 +219,21 @@ check_query_result(MYSQL *mysql, const char *pass) } row = mysql_fetch_row(result); - chop(row[0]); + gray_trim_ws(row[0]); DEBUG(100,("Obtained password value: %s", row[0])); if (strcmp(row[0], crypt(pass, row[0])) == 0) rc = PAM_SUCCESS; if (rc != PAM_SUCCESS - && check_boolean_config ("allow-mysql-pass", 1)) + && gpam_sql_check_boolean_config ("allow-mysql-pass", 1)) rc = check_mysql_pass (row[0], pass); if (rc != PAM_SUCCESS - && check_boolean_config ("allow-md5-pass", 1)) + && gpam_sql_check_boolean_config ("allow-md5-pass", 1)) rc = check_md5_pass (row[0], pass); if (rc != PAM_SUCCESS - && check_boolean_config ("allow-ldap-pass", 1)) + && gpam_sql_check_boolean_config ("allow-ldap-pass", 1)) rc = gray_check_ldap_pass (row[0], pass); if (rc != PAM_SUCCESS - && check_boolean_config ("allow-plaintext-pass", 0)) { + && gpam_sql_check_boolean_config ("allow-plaintext-pass", 0)) { if (strcmp (row[0], pass) == 0) rc = PAM_SUCCESS; } @@ -254,16 +254,15 @@ mysql_do_query(MYSQL *mysql, const char *query) char *port; int portno; char *p; - int rc; - hostname = find_config("host"); + hostname = gpam_sql_find_config("host"); CHKVAR(hostname); if (hostname[0] == '/') { socket_path = hostname; hostname = "localhost"; } - port = find_config("port"); + port = gpam_sql_find_config("port"); if (!port) portno = 3306; else { @@ -274,13 +273,13 @@ mysql_do_query(MYSQL *mysql, const char *query) } } - login = find_config("login"); + login = gpam_sql_find_config("login"); CHKVAR(login); - pass = find_config("pass"); + pass = gpam_sql_find_config("pass"); CHKVAR(pass); - db = find_config("db"); + db = gpam_sql_find_config("db"); CHKVAR(db); mysql_init(mysql); @@ -334,8 +333,9 @@ mysql_setenv(pam_handle_t *pamh, MYSQL *mysql, const char *query) #endif } -static int -verify_user_pass(pam_handle_t *pamh, const char *password, const char *query) +int +gpam_sql_verify_user_pass(pam_handle_t *pamh, const char *password, + const char *query) { MYSQL mysql; int rc; @@ -348,9 +348,10 @@ verify_user_pass(pam_handle_t *pamh, const char *password, const char *query) rc = check_query_result(&mysql, password); /* FIXME: This comment is needed to pacify `make check-sql-config' in doc: - find_config("setenv-query") */ + gpam_sql_find_config("setenv-query") */ if (rc == PAM_SUCCESS - && (q = get_query(pamh, "setenv-query", &slist, 0))) { + && (q = gpam_sql_get_query(pamh, "setenv-query", + &slist, 0))) { mysql_setenv(pamh, &mysql, q); gray_slist_free(&slist); } @@ -360,8 +361,8 @@ verify_user_pass(pam_handle_t *pamh, const char *password, const char *query) return rc; } -static int -sql_acct(pam_handle_t *pamh, const char *query) +int +gpam_sql_acct(pam_handle_t *pamh, const char *query) { MYSQL mysql; int rc; @@ -384,3 +385,19 @@ sql_acct(pam_handle_t *pamh, const char *query) return rc; } + +#ifdef PAM_STATIC + +/* static module data */ + +struct pam_module _pam_fshadow_modstruct = { + "pam_mysql", + pam_sm_authenticate, + pam_sm_setcred, + NULL, + pam_sm_open_session, + pam_sm_close_session, + NULL, +}; + +#endif |