[dovecot-cvs]
dovecot/src/auth passdb-bsdauth.c,NONE,1.1 Makefile.am,1.21,1.22
passdb.c,1.10,1.11 passdb.h,1.6,1.7
cras at procontrol.fi
cras at procontrol.fi
Wed Oct 29 16:10:23 EET 2003
Update of /home/cvs/dovecot/src/auth
In directory danu:/tmp/cvs-serv13740/src/auth
Modified Files:
Makefile.am passdb.c passdb.h
Added Files:
passdb-bsdauth.c
Log Message:
Added bsdauth support, patch by Dan Cross
--- NEW FILE: passdb-bsdauth.c ---
/* Copyright (C) 2002-2003 Timo Sirainen */
#include "config.h"
#undef HAVE_CONFIG_H
#ifdef PASSDB_BSDAUTH
#include "common.h"
#include "safe-memset.h"
#include "passdb.h"
#include "mycrypt.h"
#include <login_cap.h>
#include <bsd_auth.h>
#include <pwd.h>
static void
bsdauth_verify_plain(struct auth_request *request, const char *password,
verify_plain_callback_t *callback)
{
struct passwd *pw;
int result;
pw = getpwnam(request->user);
if (pw == NULL) {
if (verbose)
i_info("passwd(%s): unknown user", request->user);
callback(PASSDB_RESULT_USER_UNKNOWN, request);
return;
}
if (!IS_VALID_PASSWD(pw->pw_passwd)) {
if (verbose) {
i_info("passwd(%s): invalid password field '%s'",
request->user, pw->pw_passwd);
}
callback(PASSDB_RESULT_USER_DISABLED, request);
return;
}
/* check if the password is valid */
result = auth_userokay(request->user, NULL, NULL, password);
/* clear the passwords from memory */
safe_memset(pw->pw_passwd, 0, strlen(pw->pw_passwd));
if (!result) {
if (verbose)
i_info("passwd(%s): password mismatch", request->user);
callback(PASSDB_RESULT_PASSWORD_MISMATCH, request);
return;
}
callback(PASSDB_RESULT_OK, request);
}
static void bsdauth_deinit(void)
{
endpwent();
}
struct passdb_module passdb_bsdauth = {
NULL,
bsdauth_deinit,
bsdauth_verify_plain,
NULL
};
#endif
Index: Makefile.am
===================================================================
RCS file: /home/cvs/dovecot/src/auth/Makefile.am,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- Makefile.am 22 Aug 2003 02:42:13 -0000 1.21
+++ Makefile.am 29 Oct 2003 14:10:20 -0000 1.22
@@ -31,6 +31,7 @@
mech-digest-md5.c \
mycrypt.c \
passdb.c \
+ passdb-bsdauth.c \
passdb-ldap.c \
passdb-passwd.c \
passdb-passwd-file.c \
Index: passdb.c
===================================================================
RCS file: /home/cvs/dovecot/src/auth/passdb.c,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- passdb.c 14 May 2003 18:31:02 -0000 1.10
+++ passdb.c 29 Oct 2003 14:10:20 -0000 1.11
@@ -86,6 +86,10 @@
if (strcasecmp(name, "passwd") == 0)
passdb = &passdb_passwd;
#endif
+#ifdef PASSDB_BSDAUTH
+ if (strcasecmp(name, "bsdauth") == 0)
+ passdb = &passdb_bsdauth;
+#endif
#ifdef PASSDB_PASSWD_FILE
if (strcasecmp(name, "passwd-file") == 0)
passdb = &passdb_passwd_file;
Index: passdb.h
===================================================================
RCS file: /home/cvs/dovecot/src/auth/passdb.h,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -d -r1.6 -r1.7
--- passdb.h 6 Mar 2003 23:20:16 -0000 1.6
+++ passdb.h 29 Oct 2003 14:10:20 -0000 1.7
@@ -52,6 +52,7 @@
extern struct passdb_module *passdb;
extern struct passdb_module passdb_passwd;
+extern struct passdb_module passdb_bsdauth;
extern struct passdb_module passdb_shadow;
extern struct passdb_module passdb_passwd_file;
extern struct passdb_module passdb_pam;
More information about the dovecot-cvs
mailing list